web-dev-qa-db-ja.com

エラー:「インストール可能なISAMが見つかりませんでした」

デスクトップ上の同じディレクトリにあるAccessデータベースからデータを取得するために、ExcelブックにVBAコードを記述しました。私のマシンおよびWindows XPを実行している他のいくつかのマシンでは正常に動作しますが、Vistaマシンでこれをテストすると、次のエラーが発生しました。

インストール可能なISAMが見つかりませんでした

私はたくさんのオンライン検索をしましたが、具体的な答えを見つけることができないようです。接続文字列は問題ないようで、先ほど述べたように、いくつかのマシンで機能します。

誰がこれを引き起こしているのか考えていますか?私の接続文字列は次のとおりです。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\ptdb\Program Tracking Database.mdb;

ありがとう

34
cLFlaVA

Extended Propertiesを単一引用符で囲みます:

OleDbConnection oconn = 
    new OleDbConnection(
        @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';");

それを試して、それは本当に動作します。

67
bhupendra singh

データソースを単一引用符で囲んでみてください。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb';

問題は、パーサーにとって意味のある空白である傾向があります。

他の属性(拡張プロパティなど)がある場合、それらの値も一重引用符で囲む必要があります。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source='D:\ptdb\Program Tracking Database.mdb'; Extended Properties='Excel 8.0;HDR=YES;IMEX=1;';

同様に二重引用符を使用することもできます。ただし、おそらくそれらをエスケープする必要があり、シングルを使用するよりもPain In The Algorithmの方が多いことがわかります。

18
BIBD

これを確認しましたか http://support.Microsoft.com/kb/209805 ?特に、Msrd3x40.dllがあるかどうか。

Jetの最新バージョンを使用していることを確認することもできます。 http://support.Microsoft.com/kb/239114

3
Fionnuala

接続文字列でJet OLEDB:を使用するだけです。それは私のために解決しました。

以下に例を示します。

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"
1
Rezoan

よく似た問題が発生しました。

あなたと同じように、私の接続文字列は正しいように見えました。実際、他のシナリオでもまったく同じ接続文字列が機能していました。

問題はリソースの不足であることが判明しました。 20回のうち19回「インストール可能なISAMが見つかりませんでした」と表示されますが、1回または2回(コードをまったく変更せずに)、代わりに「メモリ不足」が発生します。

マシンを再起動すると問題が「解決」しました(今のところ...?)。これは、Windows XPでJetバージョン4.0.9505.0を使用して発生しました。

0
Chris Nielsen

これを使用してExcel 12 xlsxファイルを更新しました

        System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
        MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\Programming\\Spreadsheet-Current.xlsx';Extended Properties='Excel 12.0;HDR=YES;';");
        MyConnection.Open();
        myCommand.Connection = MyConnection;
        string sql = "Update [ArticlesV2$] set [ID]='Test' where [ActualPageId]=114";// 
        myCommand.CommandText = sql;
        myCommand.ExecuteNonQuery();
        MyConnection.Close();
0
MarkVL