外部データベース ドライバー(1)で予期しないエラーが発生しました

2017年11月2日

ここ2週間程あまりにも問い合わせが多いのでメモ。

———————————————
2017/11/02 追記
「原因」のKB情報を追加
———————————————

現象

10月11日のWindows Update以降、Excelを読み込むアプリで表題のようなエラーが発生。

具体的には、古いAccess(2003以前)からExcelを呼び出すプログラムや、コクヨの合わせ名人3以前(不具合が発生しているとサイトにも出ている)でExcelの読み込みができなくなったことを確認。

原因

セキュリティ更新プログラムガイド リリースノート October 2017 Security Updatesに載っているWindows Updateの更新プログラムをインストールしたことによる不具合。以下KB抜粋。OSのバージョンによる違いによって当てはまるものが異なる。

  • KB4041676 (Windows 10 Version 1709, 1703)
  • KB4041681 (Windows 7 SP1 and Windows Server 2008 R2 SP1)
  • KB4041691 (Windows 10 Version 1709, 1703, 1607 and Windows Server 2016)
  • KB4042895 (Windows 10 Version 1709, 1703, 1607, 1511, 2015年7月にリリースされた初期バージョン and Windows Server 2016)
  •  
    ここに挙がっていなかったもので以下も対象となる。

  • KB4041678 (Windows 7 SP1 and Windows Server 2008 R2 SP1)
  • KB4041687 (Windows 8.1 and Windows Server 2012 R2)
  • KB4041689 (Windows 10 Version 1709, 1703, 1607, 1511 and Windows Server 2016)
  • KB4041693 (Windows 8.1 and Windows Server 2012 R2)
  •  
    また、2017/10/18配信のWindows Updateでさらに違うKBで復活しているのでこれも対処する必要あり。

  • KB4041685 (Windows 8.1 and Windows Server 2012 R2)
  • KB4041686 (Windows 7 SP1 and Windows Server 2008 R2 SP1)
  • KB4041688 (Windows 10 Version 1709, 1703, 1607 and Windows Server 2016)
  •  
    一例として、KB4041681のページを見ると、「この更新プログラムの既知の問題」として以下のように書かれている。

    この更新プログラムをインストールすると、Microsoft JET データベース エンジンに基づくアプリケーション (Microsoft Access 2007 以前または Microsoft 製以外のアプリケーション) が Microsoft Excel .xls ファイルを作成するときまたは開くときに失敗することがあります。 “外部データベース ドライバー (1) で予期しないエラーが発生しました。 (Microsoft JET データベース エンジン)” というエラー メッセージが表示されます。

    対策

    上記サイトの回避策には以下のように書かれている。

    Microsoft Access Database Engine 2010 再頒布可能ファイルをダウンロードしてインストールし、プロバイダーとして ACE を使用するように Microsoft Excel の DB 接続文字列を変更します。 例: Provider=Microsoft.Jet.OLEDB.4.0 を Provider=Microsoft.ACE.OLEDB.12.0 に変更します。

    マイクロソフトは解決方法に取り組んでおり、今後のリリースで更新プログラムを提供します。

    とのことで、修正される予定だそうだ。
    ではあるが、とりあえず業務上待てない!

     
    業務に影響が出ているので、余裕があれば上記のように書き換える。
    もしくは、このKBをアンインストールしてしまう。

    1. コントロールパネル -> プログラムと機能 を開く
    2. 左メニューから「インストールされた更新プログラム」を選択
    3. 対象のKBを選択して右クリック -> アンインストール
    4. PC再起動
    5. コントロールパネル -> Windows Update を開く
    6. 更新プログラムの確認
    7. 「xx個の重要な更新プログラムが利用可能です」をクリック
    8. 先ほどアンインストールした対象のKBを右クリック -> 「更新プログラムの非表示」

     
    セキュリティ上はよくないが、修正パッチがリリースされるまでの暫定対応として有効かと。