2016-11-26 13 views
1

問題:MS ExcelからMS Accessデータベースと通信しようとすると、「インストール可能なISAMが見つかりませんでした」というエラーが表示されます。パスワード付きアクセスデータベースへのOLEDB接続:「インストール可能なISAMが見つかりませんでした」

エクセル拡張子= .xlsm
アクセスファイルの拡張子= .MDB
MS Officeのバージョン=オフィス2013
オペレーティングシステム= Windows 7のホームプレミアム(64ビット)

トラブルシューティングの試みがなさファイル:

  1. マイクロソフトのサポートページ:https://support.microsoft.com/en-us/kb/209805
  2. StackOverflowのページA:Troubleshooting Could not find installable ISAM error
  3. StackOverflowのページB:How to resolve "Could not find installable ISAM." error for OLE DB provider "Microsoft.ACE.OLEDB.12.0"
  4. StackOverflowのページC:ここでCould not find installable ISAM when importing Access table to Excel

は、VBAコードである:

Dim cnn as New ADODB.Connection 
    cnn.Provider = "Microsoft.ACE.OLEDB.12.0;" 
    cnn.ConnectionString = "Data Source=" & Range("fld") & "\MyDB.mdb:Jet OLEDB: Database Password=" & "Range("pwdDB") 
    '≈Do stuff 
    cnn.close 
    set cnn = nothing 

誰がこの問題を解決する方法を知っていますか?

+0

あなたの実際のコードを表示するのに役立ちますか? –

答えて

2

ありがとうございます。

私はそれが何であるかを見つけました:保護されたアクセスデータベースのために、パスワードの大文字と同じ記号。

►問題:データベースパスワードが等号( "=")で始まる場合、接続文字列に "Installable ISAM"エラーが発生します。
►解決方法:パスワードの先頭の等号記号を削除します。

エラーメッセージには実際にその詳細が記載されていないか、パスワードが問題であるとのヒントが表示されます。

これは将来他の人に役立つことを願っています。

1

もう1つの答えに加えて、パスワードを二重引用符で囲むと、等号記号で始まるパスワードを実際に処理できます。たとえば、パスワードが=testであれば、我々は

Jet OLEDB:Database Password="=test" 

を使用し、パスワードはその後、二重引用符が含まれている場合、我々はのためので、(二重引用符で囲まれた文字列リテラル内の二重引用符のためにいつものように)、それらを二重にする必要がありますパスワード="test我々はパスワードがpwdという名前の文字列変数にあると仮定し、一般的なケースのための

Jet OLEDB:Database Password="=""test" 

VBAコードを使用する必要があります。

Dim connStr As String 
connStr = "Data Source=C:\__tmp\pwdTest.accdb;" 
If Len(pwd) > 0 Then 
    connStr = connStr & "Jet OLEDB:Database Password=""" & Replace(pwd, """", """""") & """;" 
End If 
Dim cnn As New ADODB.Connection 
cnn.Provider = "Microsoft.ACE.OLEDB.12.0" 
cnn.Open connStr 
Debug.Print "Connected using '" & connStr & "'" 
+0

Ah。非常に素晴らしい。ありがとうございました。 –

関連する問題