40

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

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

私はオンラインでたくさんの検索を行いましたが、具体的な答えを見つけることができないようです. 接続文字列は問題ないようで、前述したように、複数のマシンで動作します。

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

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

ありがとう

4

8 に答える 8

77

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

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

それを試してみてください、それは本当に機能します。

于 2012-05-23T05:36:27.937 に答える
21

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

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;';

二重引用符も同様に使用できます。ただし、おそらくそれらを回避する必要があります。シングルを使用するよりも、アルゴリズムの方が苦痛であることがわかります。

于 2009-02-04T16:44:53.093 に答える
3

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

例を以下に示します。

"Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=E:\Database.mdb;Jet OLEDB:Database Password=b10w"
于 2013-04-08T12:25:03.633 に答える
0

非常によく似た問題に遭遇しました。

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

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

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

于 2009-10-13T22:12:45.393 に答える
-1

この接続文字列を使用します

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";
于 2011-10-13T06:09:45.093 に答える
-2

この問題は、Access が必要とする登録済みの正しい ISAM (インデックス付きシーケンシャル ドライバー方式) をマシンが見つけられないために発生します。

おそらく、マシンに MSACeesss がインストールされていないためでしょうか? 最新バージョンの Jet を使用していることを確認します。それでも動作しない場合は、他のマシンのいずれかから Msrd3x40.dll ファイルを見つけて、それを Vista マシンのどこかにコピーし、その上で regsvr32 を呼び出します (管理者モードで)。 ) それはあなたのためにそれを整理する必要があります。

于 2009-02-04T16:55:33.790 に答える
-2

以下の接続文字列を使用して、XLSX ファイルから読み取ります。

string ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + <> + ";Extended Properties=Excel 8.0;";

于 2012-11-22T13:07:52.347 に答える