web-dev-qa-db-ja.com

ODBC Excelドライバー:外部データベースドライバーからの予期しないエラー

10月10日からのWindowsUpdate以降、ODBC Excelドライバーが機能しなくなりました。ファイルを読み取ろうとすると、次のエラーが発生します。

「外部データベースドライバからの予期しないエラー(1)」

次の接続文字列でADO接続を使用して、DelphiでExcelファイルを開きます。

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

Microsoft.ACE.OLEDB.12.0に切り替えることで機能させることができますが、それを機能させるには、すべてのお客様が、ソフトウェアを使用するすべてのコンピューターにMicrosoftAccessデータベースエンジン再頒布可能パッケージをインストールする必要があります。

誰かが別の解決策や回避策を持っていますか?前もって感謝します。

5
Bram

お客様のマシンに、最後のMicrosoftパッチに付属のKB4041681(Windows 7)をアンインストールしました。私のマシンでは、KB4041676(Windows 10)を削除しました。その後、Microsoft.Jet.OLEDB.4.0が機能するようになりました。

Microsoftがこのバグをすぐに修正することを願っています。

3
donhauro

3年前から開発した2つのアプリケーション(c#とJava)でも同じ問題が発生しました。 2017年10月10日以降、Excel 2003にエクスポートできませんでしたが、2007は機能し、Excel 2003からインポートできませんでしたが、2007もインポートできました。

ArcGIS Desktop 10.5.1の場合ESRI(地理的処理で最も一般的なソフトウェア)では、Excel2003および.mdbファイルを開くことができませんでした。

一時的な解決策:Windows 8.1でKB4041693、KB4041687をアンインストールします(おそらくw10の場合)。

両方のパスのMicrosoft変更ログで、「Microsoftjetの更新[...]とセキュリティ更新」について何かを述べています。アンインストールして再起動すると、すべてのソフトウェアが再び正常になります。

この問題は2017年10月10日に発生しました。 Microsoftフォーラムでは、この問題が報告されています(kb4041693は「修正」する必要がありますが、それでも機能しません)。たぶん数週間以内に、彼らはこの問題を(適切に)解決するでしょう。

これらのアップデートを(OSに応じて)アンインストールすると、コードが正常に実行され始めます

  • KB4041681-Windows 7SP1およびWindowsServer 2008 R2 SP1
  • KB4041690 -Windows Server 2012
  • KB4041693-Windows8.1およびWindowsServer 2012 R2
  • KB4041678-私にとってこれは問題でした

https://support.Microsoft.com/en-in/help/4041678/windows-7-update-kb4041678

0
Anish Sivadas

ここに解決策があります...私は別のフォーラムでそれを見つけて、私のために完全に機能します...それは100%機能します

以下に記載されているように:

https://forums.embarcadero.com/thread.jspa?messageID=902557&tstart=

https://forum.kanors-emr.org/showthread.php?tid=571&pid=2652#pid2652

KB4041681は、msexcl40.dllのバージョン4.0.9801.1をインストールします。

  1. Msexcl40.dllの以前のバージョン(4.0.9801.0)を検索します

  2. 別のディレクトリに配置します。彼らはアプリケーションディレクトリを提案しますが、次のステップでこの古いバージョンを指すようにレジストリを変更するので、おそらくどこにでも行くことができます。

  3. レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel\win32を更新して、手順2の場所を指すようにします。

私にとっては、次の手順に従って機能しました。

ps。:Windows Server2008R2があります

1 –これをダウンロードしてインストールします: https://www.Microsoft.com/en-us/download/details.aspx?id=23734 2 – .dtsxファイルを開き、Excel接続を変更します。プロパティダイアログで、ConnectionStringプロパティの3つのドットをクリックし、Microsoft Excel 2007に変更します。これにより、接続文字列が自動的に次のように変更されます。Provider= Microsoft.ACE.OLEDB.12.0; Data Source = {YOURPATH}; Extended Properties =” Excel 12.0 XML; HDR = YES”; 3 –一部の.dtsxファイルは構成ファイルを指しています(通常は.dtsConfig拡張子が付いています)。また、これらの人を適切なプロバイダーを指すように変更しました(Visual Studioから取得した接続文字列をほぼコピーして貼り付けました)

この後、SQLジョブを再度実行すると、正常に機能しました。

0
Catinodeh

私も同じ問題を抱えていました。 Excelの宛先でExcel2007を変更しました。機能した。これは、provider = Microsoft.ACE.OLEDB.12.0を変更するのと同じです。

0
Vaishnavi

SSISパッケージを使用している場合は、Excelシートバージョン2003をExcelソースまたはExcel宛先で2007に変更してください。通常、この問題はExcelバージョンが原因です。

0
Amar Singh