エクセルからADOでアクセスする際のPWエラー

このQ&Aのポイント
  • エクセルからADOでアクセスする際に、パスワード認証エラーが発生する問題について質問です。
  • パスワードは正しく入力しているにも関わらず、エラーが発生することがあります。構文などが正しいか確認しましたが、原因がわかりません。
  • ファイルのパスも正しく指定しており、他の要素に問題がないことを確認しました。パスワードに関する設定や制約によってエラーが発生する可能性があるのでしょうか?
回答を見る
  • ベストアンサー

エクセルからアクセスにADO PWエラー

エクセルからアクセスにADOで接続したいのですが アクセスのファイルにはパスワードがかかっていて、 そのパスワードを指定して開こうとしてるのですが パスワードが違います、と言うエラーになります。 でもパスワードは確実に合っています。 構文がおかしのでしょうか? cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _ "C:\PW.accdb;" & _ "Jet OLEDB:Database Password=0000;" パスワードがあっててもエラーになることはありますか? ファイルのパスをでたらめに変えたら違うエラーが発生したので、ファイルのパスもあっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

Accessのプロセスが残ってしまうので 下記に変更を。 ※Microsoft Office 14.0 Access Database Engine Object Library に参照設定が必要です Sub da2() Dim ac As Object Dim db As DAO.database Dim rs As DAO.Recordset Set ac = CreateObject("Access.Application") Set db = ac.DBEngine.OpenDatabase("e:\calendar.accdb", False, True, ";pwd=0000") Set rs = db.OpenRecordset("select * from 休日") Cells(1, 1).CopyFromRecordset rs '←ここも適宜修正を rs.Close: Set rs = Nothing db.Close: Set db = Nothing ac.Quit: Set ac = Nothing End Sub

TUYNRSLJBWGL
質問者

お礼

頂いた方法で無事接続できました。 ありがとうございました。勉強になりました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

Access2010のaccdb なら http://okwave.jp/qa/q7948601.html かな? 上記リンク先のように以前の暗号化方法に変えてADOのままか 下記のようにするか ※Microsoft Office 14.0 Access Database Engine Object Library に参照設定が必要です Sub da() Dim db As DAO.database Dim rs As DAO.Recordset Set db = DBEngine.OpenDatabase("e:\calendar.accdb", False, True, ";pwd=0000") Set rs = db.OpenRecordset("select * from 休日") Cells(1, 1).CopyFromRecordset rs db.Close Set db = Nothing End Sub で、とりあえずレコードの取得は出来るかと思います。 良く調べてはいないのですが何故かADOだと・・・???。

TUYNRSLJBWGL
質問者

お礼

早速のご回答ありがとうございます。 DAOを使えばできるのですね。 今すべてADOで作ってしまったので、書き換えようと思います。 ちなみに質問後検証してみたのですが なぜか同じコードで、アクセスvbaで実行するとパスワード付きのファイルに接続することができました。 同じコードをエクセルvbaに張り付けて実行すると質問文と同じエラーになります。 エクセル側に原因がありそうです。

関連するQ&A

  • パスワードが正しくありません。

    エクセルからPW付のアクセスファイルへADOで 接続したいのですが cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source= D:PW.accdb;Jet OLEDB:Database Password=0000;" とすると 実行時エラー2147217843 パスワードが正しくありません。 と言うエラーになります。 でもパスワードはあってます。 手入力なら開けます。 コードが間違ってるのでしょうか?

  • アクセス2007でADOは使えないのでしょうか?

    デスクトップにあるDatabase1.accdbを開いて ツールの参照設定で Microsoft ActiveX Data Objects 2.8 Library にチェックを入れ Sub a() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName とやろうとしたら、 ************************************************************ 実行時エラー '-20147467259(80004005)': データベースの形式'C:\Users\○○\Desktop\Database1.accdb'を認識できません。 ************************************************************ となってしまいます。 再起動しても同じです。 ADOは2007では使えないのでしょうか?ご回答よろしくお願いします。

  • FTPサーバー上のデータにADO接続したい

    WINDOWS2008サーバー/クライアント Win7 FTPサーバー上にあるEXCELファイルから、同じFTPサーバー上のACCESSファイルへ ADO接続したいのですが、(そのエクセルをクライアントPC Win7から実行します) Dim adoCON As New ADODB.Connection adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=IPアドレス" & ";DATABASE=accdb名" & & "; UId=FTPユーザー名 ; PWD=パスワード; " ではエラーになってしまいます。 どなたか教えていただけませんでしょうか? どうぞよろしくお願いいたします。

  • DBパスワードありVBAアクセスについて

    Access2010を使用しております。 Excel2010からAccessにVBAからSelect文でデータセット取得しようとしております。 接続には以下の記述で接続しようとしてますが、オートメーションエラーになります。 Set con = New ADODB.Connection con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Properties("Jet OLEDB:Database Password") = Password con.Open "C:\\Directory" または con.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Directory;Jet OLEDB:Database Password=Password" con.Open などいろいろ試してますがうまくいきません。 パスワードがなければ以下の記述で開けるのですが。 con.Provider = "Microsoft.Ace.OLEDB.12.0" con.Open "c:\\Directory" アドバイス等お願いします。

  • Excelからパスワード付きAccess

    現在 パスワードが設定されたAccessファイル(accdb形式)のデータをExcelに取り込むプログラムを作成しています. 接続時のプログラムは以下のように記述しました. Dim cn As New ADODB.Connection Dim cnStr As String, dbDir As String, Pswd As String dbDir = "c:\test\test.accdb" Pswd = "pass" cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & dbDir & ";" & _ "Jet OLEDB:Database Password=" & Pswd & ";" cn.Open cnStr 上記でexcel2003及び2007からaccdbに接続したところ問題なくデータ取得できました. excel2010で上記プログラムを実行すると 「パスワードが正しくありません」 と表示され,データが取得できません. このような場合,どうすれば解決出来るでしょうか?

  • ExcelVBAからAccessにアクセスする

    ExcelVBAからパスワード付きAccessにアクセスする ExcelVBAからADOでAccessに次のようにしてアクセスしています。 Dim Cnn As ADODB.Connection Set Cnn = New ADODB.Connection Cnn.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;\" _ & \"Data Source=\" & mdbのフルパス Cnn.Open パスワード付きのmdbにアクセスするのはどのようにしたらよろしいでしょうか?

  • インストール可能な ISAM ドライバが見つかりま

    とあるVBA付きのエクセルファイルを立ち上げると 「インストール可能な ISAM ドライバが見つかりませんでした。」 と出てきたのですが、 cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _ ActiveWorkbook.Path & "\test_be.accdb" としていて、今までは問題なく使えていました。 VBAコードをデバッグしてもどこも引っかからないのですが 何が原因なのでしょうか? バージョンは2007です。 ADOは2、7にチェックを入れています。 http://support.microsoft.com/kb/318161/ja を見たのですが、jetで接続しないとダメなのでしょうか?

  • VB2008 ACCESS 最適化について

    どなたかわかる方教えてください。 プログラムでACCESSの最適化をしようと思います。VB6で使用していたソースをベースに下記のようなプログラムを作ったのですが 途中、エラー(添付ファイル)が発生してしまいました。 どうすれば解決できるでしょうか。よろしくお願いします。 Dim BaseSize As Long Dim jroJet As New JRO.JetEngine Dim TempDB As String Dim MakeUserPath As String TempDB = Application.StartupPath + "\Database\TMP.accdb" '一時的に領域作成 MakeUserPath = Application.StartupPath + "\Database\Database.accdb" 'データベースの最適化 BaseSize = FileLen(MakeUserPath) jroJet.CompactDatabase("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & MakeUserPath & ";", _ "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & TempDB & ";") '最適化ファイルを正規データベースにする If Len(Dir$(MakeUserPath)) > 0 Then Kill(MakeUserPath) FileCopy(TempDB, MakeUserPath) If Len(Dir$(TempDB)) > 0 Then Kill(TempDB) End If

  • vb.net で ADO でアクセスのテーブル

    アクセスのテーブルのレコードの数を取得したいのですが コードがわからないので続きを教えていただけますか? Imports System.Data.OleDb Sub test() Dim oleConn As OleDbConnection Dim oleCmd As OleDbCommand Dim oleAdp As OleDbDataAdapter oleConn = New OleDbConnection("Provider = Microsoft.ACE.OLEDB.12.0;" & "Data Source=C:\Database1.accdb;") oleCmd = oleConn.CreateCommand() oleCmd.CommandText = "SELECT * FROM テーブル1" oleAdp = New OleDbDataAdapter(oleCmd) 'MsgBox oleCmd.??? End Sub までできたのですが、ここからどうすれば数を取得できますか?

  • ADO エクセル→エクセル PW付きファイル接続

    以前も http://okwave.jp/qa/q8283354.html で同じような質問をしたのですが ADOでエクセルからエクセルに接続する方法を教えてください。 接続先のエクセルファイルにはPWがかかっています。 Sub Sample() Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset With cn .Provider = "Microsoft.ACE.OLEDB.12.0" .Properties("Extended Properties") = "Excel 12.0" .Properties("Data Source") = ActiveWorkbook.Path & "\test.xlsx" .Properties("Password") = "0000" .Open End With 上記では、.Open部分で -------------------------------------------------------- 実行時エラー-2147217843 アプリケーションを起動できません。 システムデータベースが存在しないか、またはほかのユーザーが排他的にシステムデータベースを開いています。 -------------------------------------------------------- となります。 .Properties("Password") をコメントアウトすると、 -------------------------------------------------------- 実行時エラー -2147467259 外部テーブルのフォーマットが正しくありません。 -------------------------------------------------------- となり、そのまま再度F5を押すと -------------------------------------------------------- 実行時エラー -2147217843 認証に失敗しました。 -------------------------------------------------------- となります。 ちなみに参照設定は Microsoft ActiveX Data Objects 2.7 Library にチェックを入れています。 .Properties("Data Source") = ActiveWorkbook.Path & "\あああ.xlsx" のように、存在しないファイル名にした時は、 .Openを無事通過しますが、データの操作取得はできません。 どなたかわかる方ご教授おねがいします。

専門家に質問してみよう