質問

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

  

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

私はオンラインで検索の束を行ってきたが、具体的な答えを見つけるように見えることはできません。接続文字列は、私が述べたように、それはいくつかのマシン上で動作しますが、罰金のようだ、と。

誰もがこれを引き起こしている可能性がどのような任意のアイデアを持っていますか?次のように私の接続文字列は次のとおりです。

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

おかげ

正しい解決策はありません

他のヒント

Extended Properties周りの単一引用符を置きます:

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

それを試してみて、それが実際に動作ます。

データソースの周りに単一引用符を入れてみます:

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

あなたは同様に良好に二重引用符を使用することができます。しかし、あなたはおそらくそれらをエスケープする必要があります、と私はシングルを使用するよりもアルゴリズムでの痛みのより多くのことがわかります。

あなたがこの http://support.microsoft.com/kb/209805する ?具体的には、あなたはMsrd3x40.dllを持っているかどうか。

ます。http://サポート

また、あなたがジェットの最新バージョンを持っていることを確認するようなことがあります。 microsoft.com/kb/239114する

ただ、ジェットOLEDBを使用する:あなたの接続文字列に。 それは私のために解決します。

の例は以下である:

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

私は非常によく似た問題が発生しています。

あなたのように、私の接続文字列が正しい登場 - そして実際、まったく同じ接続文字列は、他のシナリオで働いていた。

問題は、資源の不足であることが判明しました。 20のうち19回は、私は(すべてで任意のコードを変更せず)一度か二度「インストール可能なISAMドライバーが見つかりませんでした」しかし、それは代わりに「メモリ不足」もたらすであろう見るでしょう。

マシンを再起動(今の...?)問題「解決」。これは、Windows XP上のジェットバージョン4.0.9505.0を使用して起こっています。

私はエクセル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();

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

string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;" +
      "Data Source=" + strFileName + ";" + "Extended Properties=" + "\"" + "Excel 12.0;HDR=YES;" + "\"";
機械が見つけることができないため、

この問題は、正しいISAM(インデックス付きシーケンシャルドライバ方式)は、アクセスが必要であると登録されます。

マシンはMSACeesssがインストールされていないので、

それはおそらくですか?私はそれが管理者モードで(それにVistaマシンとコールします。regsvr32にどこかにコピーし、あなたがジェットの最新バージョンを持っている、そしてそれはまだ動作しない場合は、他のマシンのいずれかからファイルMsrd3x40.dllを見つけることを確認します)それはあなたのためにそれを整理する必要があります。

XLSXファイルから読み込むには、以下の接続文字列を使用します:

  

の文字列のConnectionString =「プロバイダ= Microsoft.ACE.OLEDB.12.0;データ   ソース= "+ <> +";拡張   プロパティ=エクセル8.0; ";

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top