• ベストアンサー

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

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

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

  • ベストアンサー
回答No.2

Access2010の場合ですが ファイル→オプション→クライアントの設定の下の方に 暗号化方法 『以前の暗号化方法を使用する(下位互換性が必要な場合や複数のユーザーがデータベースを共有する場合に最適)』 『既定の暗号化方法を使用する(高度なセキュリティ)』 の二つがあります。 既定の暗号化方法を使用している場合はExcelからADO・DAOでの接続はできません(未対応) また、 リボンのデータ→外部データの取り込みでAccess データベースを指定すると 正しいパスワードを入れていても入力を繰り返し求められます(何もエラーは出ません) ですので、 パスワードを解除し 以前の暗号化方法を使用するにチェックを入れ直し、OK (Accessの再起動が必要だったかも) 再度パスワードの設定を行うしかありません。

cookpccr
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

参考WEB記事。 https://msdn.microsoft.com/ja-jp/library/cc376618.aspx Jet OLEDB:Database Password ・Open メソッド Password 引数とは同じではないことに注意してください --- http://yasusigi.net/iasdocs/aspdocs/ref/comp/dameth03.htm Connection オブジェクトの場合: ・Password (省略可能) 接続を確立する際に使用するパスワードを格納する文字列型 (String) です。 ーー 現在のコードのPasswordの部分を「Passwordなし」の記述にしてやってみるとどうなりますか。 ーー 見当違いの折は、お詫びします。

cookpccr
質問者

お礼

ありがとうございました。

関連するQ&A

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

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

  • 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" アドバイス等お願いします。

  • MDBパスワード設定済みDBへ接続

    MDBパスワード設定済み(排他オープンからの設定)のDBへ接続を試みているのですが、うまく 接続できません。 ご教授ください。 ASP vbscript <ソース> set objCon=ServerCreateObject("ADODB.Connection") cn1 = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "DataSource=" & Server.path("db.mdb") & ";Jet OLEDB:Database Password=password;" objCon.Open cn1 <エラー> Microsoft JET Database Engine エラー '80040e4d' パスワードが正しくありません。

  • 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で上記プログラムを実行すると 「パスワードが正しくありません」 と表示され,データが取得できません. このような場合,どうすれば解決出来るでしょうか?

  • アクセス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では使えないのでしょうか?ご回答よろしくお願いします。

  • インストール可能な 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で接続しないとダメなのでしょうか?

  • NEWキーワードとCreateObjectは同じ?

    NEWキーワードとCreateObjectは同じことをするのでしょうか? Sub ADO_Sample1() Dim cn As New ADODB.Connection Set cn = CreateObject("ADODB.Connection") cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & _ "D:\Mail.mdb;Jet OLEDB:Database;" Debug.Print "ファイルに接続できました。" cn.Close: Set cn = Nothing End Sub このようなコードの時、 Set cn = CreateObject("ADODB.Connection") は、あってもなくても問題ないようです。 NEWとCreateObjectがある場合は、 2度データベースに接続してしまうのでしょうか? NEWとCreateObjectがあってもエラーにならない理由を教えてください。

  • VBのデータグリッドの表示が消えてしまいました。何故でしょうか?

      cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" cn.Open mySQL= "SELECT * FROM 2学年 " _ & "WHERE (((所属)='" & frmPW.cmb生徒.Text & "'))" Set rs= New ADODB.Recordset rs.Open mySQL, cn, adOpenStatic Set DataGrid1.DataSource = rs と記述していて、それまでデータグリッドにデータが上手く表示されていたのに、 接続先のmdbファイルにパスワードを設定して、ConnectionStringの設定部分を   cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=C:\生徒管理\生徒.mdb;" & _ "Jet OLEDB:Database Password=seito2;" に変更したところ、データグリッドにデータが表示されなくなりました。 データベースへの接続は上手くいっているようなのですが、何故データグリッドに データが表示されなくなったのでしょうか。 よろしくお願いします。

  • Newがどのような役割をしているのかわからない

    エクセルからアクセスの更新クエリを実行する際に エクセル側のコードで Sub ACCESSのアクションクエリを実行する() Dim cn As ADODB.Connection Dim myCmd As ADODB.Command Set cn = New ADODB.Connection Set myCmd = New ADODB.Command cn.Open "Provider = Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath & ".accdb;Jet OLEDB:Database" だとうまくいきませんでしたが、 Dim cn As New ADODB.Connection にしたらうまくいきました。 Newを付けることによって成功したのですが、 Newがどのような役割をしているのかわからないので教えてください。

  • ADO1とADO2は意味は同じですか?

    Private Sub ADO1() Dim cn As New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub Private Sub ADO2() Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & CurrentProject.FullName cn.Close: Set cn = Nothing End Sub は、 Dim cn As ADODB.Connection Set cn = New ADODB.Connection を簡素化したものが Dim cn As New ADODB.Connection になるのでしょうか?

専門家に質問してみよう