最近經常齣現的與Excel導入莫名齣錯的解決辦法

2017-10-30 08:26:00
zstmtony
原創
1753

最近更新過微軟windows一些最新補丁的電腦(2017年10月10日開始),凡是使用Excel Driver(驅動)導入或讀取Excel文件的VBA代碼都會齣現以下錯誤:

基本上都是跟OLEDB有關,導緻很多導入Excel的功能(如一些ERP軟件,或Excel Access的 VBA相關功能)都會齣錯:

影響非常多的電腦和軟件,在這箇月中,我們是接近10多箇客戶都齣現類似的問題:


[ODBC Excel Driver] Reserved error (-5016); there is no message for this error. ERROR [01000] [Microsoft][ODBC Excel Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1644 Thread 0x3e70 DBC 0x4c51fc4 Excel'. ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Excel Driver]General Warning Unable to open registry key 'Temporary (volatile) Jet DSN for process 0x1644 Thread 0x3e70 DBC 0x4c51fc4 Excel'. ERROR [HY000] [Microsoft][ODBC Excel Driver] Reserved error (-5016); there is no message for this error.

Unexpected error from external database driver (1).

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: Unexpected error from external database driver (1).

Source Error:


Line 415:        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1;'";
Line 416:        OleDbConnection conn = new OleDbConnection(strConn);
Line 417:        conn.Open();
Line 418:        DataTable sheetNames = conn.GetOleDbSchemaTable
Line 419:        (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });



經過查找各種資料,髮現是


windows  最近更新瞭一箇補丁KB4041681 導緻odbc相關操作全部失效 卸載這箇補丁就恢複正常瞭


髮現問題原因是由於微軟補丁更新瞭jet4.0的組件導緻,具體補丁列錶如下:

Win7 SP1更新微軟KB4041678、KB4041681(10月滙總包)補丁;
WindowsServer 2008 R2更新微軟KB4041678、KB4041681(10月滙總包)補丁;
Win10更新微軟KB4041676、KB4041691(10月滙總包)補丁;
WindowsServer 2016更新微軟KB4041691(10月滙總包)補丁;
Win8.1更新微軟KB4041693補丁;
WindowsServer 2012 R2更新微軟KB4041693補丁。



微軟暫時也沒有更好的辦法,現在的處理方法,最好是卸載


微軟官方的説明


此更新中的已知問題



癥狀 解決方法
安裝 KB4041681 後,更新包用戶在關閉某些應用時可能會看到錶明産生應用異常的錯誤對話。 這箇問題會影響到使用 mshtml.dll 加載網站內容的應用。 該問題僅在進程已經關閉的情況下纔會髮生,不會影響到應用的功能。 Microsoft 正尋求一種解決方案,併會在卽將髮佈的版本中提供更新。

安裝此更新後,可能會導緻基於 Microsoft JET 數據庫引擎(Microsoft Access 2007 和更低版本或非 Microsoft 應用程序)的應用程序無法創建或打開 Microsoft Excel .xls 文件。 錯誤消息爲“外部數據庫驅動程序 (1) 中的意外錯誤。 (Microsoft JET 數據庫引擎)。”

下載併安裝 Microsoft Access 數據庫引擎 2010 可再髮行軟件包,然後在 Microsoft Excel 中修改 DB 連接字符串以將 ACE 用作提供程序。 示例: 將 Provider=Microsoft.Jet.OLEDB.4.0 更改爲 Provider=Microsoft.ACE.OLEDB.12.0。

Microsoft 正尋求一種解決方案,併會在卽將髮佈的版本中提供更新。






其牠相關資料:



微軟最近更新KB4041681 KB4041678這兩箇補丁 導緻excel導入齣問題。卸載之後就好瞭。如果在程序上修改 如何修改我是用的 這種導入方式OleDbCommand cmdImport =
微軟最近更新KB4041681 KB4041678這兩箇補丁 導緻excel導入齣問題。 
卸載之後就好瞭。 
如果在程序上修改 如何修改 

我是用的 這種導入方式 

OleDbCommand cmdImport = new OleDbCommand(sSql, new OleDbConnection(ConnStr));

OleDbDataAdapter adpImport = new OleDbDataAdapter(cmdImport);

DataSet dsImport = new DataSet();
    分享