• 締切済み

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にアクセスするのはどのようにしたらよろしいでしょうか?

みんなの回答

noname#140971
noname#140971
回答No.2

チクッとテスト用関数を作成すると接続確認ってのができます。 ? CNNTest("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Temp\DB9.mdb;Jet OLEDB:Database Password=xxxx;") True Public Function CNNTest(ByVal strCNNString As String) As Boolean On Error GoTo Err_CNNTest   Dim isNotOK As Boolean   Dim cnn   As ADODB.Connection      Set cnn = New ADODB.Connection   With cnn     .ConnectionString = strCNNString     .Open   End With Exit_CNNTest:   CNNTest = Not isNotOK   Exit Function Err_CNNTest:   isNotOK = True   Resume Exit_CNNTest End Function

takuma_18
質問者

お礼

ありがとうございました

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

MDBにパスワードをつけた場合 JET OLDDB:Database Password でMDBに設定したパスワードをConnectionStringの中に追加しましょう パスワードが"abc123"の場合 Cnn.ConnectionString = \"Provider=Microsoft.Jet.OLEDB.4.0;\" _   & \"Data Source=\" & mdbのフルパス & ";" & _   "JET OLEDB:Database Password=" & "abc123;" といった具合になります

takuma_18
質問者

お礼

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

関連するQ&A

  • 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 になるのでしょうか?

  • VB6.0とaccessのDBを接続する

    初めまして。 件名のようなことを実行する際、 以下のソースを参考にしようと思ったのですが、 ******************************************* Dim cn As New ADODB.Connection Dim rc As New ADODB.Recordset ' 接続を確立する cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\My Documents\db1.mdb;" ' テーブル名を指定してレコードセットを作成する rs.Open "Table1", cn, adOpenKeyset, adLockOptimistic ************************************* > cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ > "Data Source=C:\My Documents\db1.mdb;" この部分の接続文字はどのようにしたら取得できるのでしょうか? SQLserverのときは、コンポーネントから Microsoft ADO Data Control 6.0(AP4)(OLEDB) を追加し、プロパティでOLE DBプロバイダを選択して接続文字を取得したのですが、accessに繋ぐのは初めてで、わかりません。 どなたか宜しくお願いいたします!!

  • VB6からAccess2000のテーブル使用

    今、VB6からAccess2000のテーブルを参照、変更する処理を作っています。 で、データが20MB(最適化済)くらいになり、コネクションを確立するのに時間がかかります。 何か処理が早くなる方法は無いでしょうか? Public cnn_MASTER As New ADODB.Connection 'コネクション Public rec_MASTER As New ADODB.Recordset 'レコードセット SUB mdb_syori()  MY_PATH = app.path  MDB_MASTER = "\AA.mdb"  TBL_MASTER = "Table1"     'ここの処理が遅い  cnn_MASTER.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _       "Data Source=" & MY_PATH & "\DATA" & MDB_MASTER & ";"  sqlCODE = "SELECT * from " & TBL_MASTER  rec_MASTER.Open sqlCODE, cnn_MASTER, adOpenKeyset, adLockOptimistic      ・      ・      ・

  • Excel VBA について教えて下さい

    Excel VBA でAccess接続します 今までは Sub aaa() Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub のように使っていましたが(単一プロシージャ) Set cn = CreateObject("ADODB.Connection") の部分をパブリックにして Sub bbb() cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=aaa.mdb;" End Sub 別のプロシージャからも、使えるためには パブリックにするための方法を教えて下さい

  • 【VB】データグリッドコントロールにデータベースを表示させたい

    お世話になります。 フォーム上にMicrosoft DataGrid Control 6.0(OLEDB)を置いて、 データベースと接続し、データベースを表示させたいのですが、 データベースエンジンがMicrosoft.Jet.OLEDB3.51だとうまく表示してくれますが 4.0だとなぜか表示してくれません。 原因、対策などわかるでしょうか? ソースは以下のように単純なものです。 Private cn As ADODB.Connection Private rs As ADODB.Recordset Private Sub Form_Load() Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\パスワード管理.mdb" cn.Open Set rs = New ADODB.Recordset rs.Open "パスワード", cn, adOpenStatic, adLockReadOnly Set DataGrid1.DataSource = rs End Sub

  • エクセル側からアクセスへデータ転送

    エクセル側からアクセスにデータ転送する時に Sub Data_Add() Dim db As New ADODB.Connection Dim Rs As New ADODB.Recordset db.Open _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Users\Owner\Desktop\1.mdb;" アクセス2003にデータを転送する場合はこれでうまくいきましたが、 アクセス2007にデータを転送しようと、 \1.accdb;"とすると、データベースの形式を認識できません。となってしまいます。 どうしたらいいでしょうか? だれか教えて頂けませんか?

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

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

  • Access VBA について

    Access2000 をXPで動かしています。 全く別のフォルダーに入れている ABC.mdb を使って、 \Seikyu というフォルダーにある 請求sys.mdb の テーブル「銀行マスター」から銀行名等を取りだそう としています。 Dim DB As ADODB.Connection Set DB = New ADODB.Connection DB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Program Files\Seikyu\請求sys.mdb;" Set RS = New ADODB.Recordset RS.Open "銀行マスター", DB, adOpenKeyset, adLockOptimistic Me.T1 = RS!ID Me.T2 = RS!銀行名 Me.T3 = RS!口座 RS.Close DB.Close こうすると、 実行時エラー '3709': このコンテキストで閉じられているかあるいは無効です のエラーが表示されます。 どこが間違いなのでしょうか。

  • 実行時エラー'-2147467259(80004005)':

    エクセルからADOでアクセスに繋ごうとしたときに 実行時エラー'-2147467259(80004005)': マシン'マシン名'のユーザー'Admin'がデータベースを開けない状態、またはロックできない状態にしています。 というエラーが出てしまいます。 書いているコードは以下です。 Public cn As ADOdb.Connection Set cn = New ADOdb.Connection cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb" test.mdb自体はテーブルもクエリもフォームも何も開いていない状態です。 一度アクセスを終了させて再起動させればうまくできるのですが、何が原因でこのメッセージが出るのでしょうか? もしわかれば教えてください。 よろしくお願いします。

  • VBからAccessへの接続でエラー

    OS:Win2K SP4 SOFT:VB6 ACCESS2K Dim strDatabase As String Dim cn As Object Dim rs As Object Sub xx() Set cn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") strDatabase = "C:\出荷配送システム\mftbc.mdb" cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & strDatabase ・       ・       ・ End Sub 上記ソースの「cn.OPEN」メソッドでエラーが発生します。 エラー内容は 'OPEN'メソッドは失敗しました。'_Connection'オブジェクト データベースに接続できません。 です。 何が原因なんでしょうか?? mdbのあるPath,File名は合っています。

専門家に質問してみよう