====== プロバイダ OLEDB.4.0 ====== ===== 概要 ===== 64bitのPCには、「Microsoft.Jet.OLEDB.4.0」が提供されていません。\\ MDBやExcelの操作をしようとした場合に下記エラーが発生します。\\ 「'Microsoft.Jet.OLEDB.4.0' プロバイダはローカルのコンピュータに登録されていません。」\\ 会社でMicrosoft Officeの「Microsoft Access 2010」がインストールされていても、それは32bit版となります。\\ 32bit環境内なら「Microsoft.Jet.OLEDB.4.0」が使用できます。 ===== 対応 ===== * BATファイルは、32bit環境の「%windir%\SysWOW64\cmd.exe」を使用する。 * VBSファイルは、32bit環境の「%windir%\SysWOW64\cscript」を使用する。 * プロバイダを「Microsoft.ACE.OLEDB.12.0」に変更する。 * .NETの場合、AnyCPUではなくx86でコンパイルする。 参照:[[http://qlikview-training.ashisuto.co.jp/microsoft-access-odbc-oledb-driver/|Microsoft Access(.mdb、.accdb)のODBC、OLEDBドライバーに関するまとめ]] ==== プロバイダの変更 ==== VBSなどにプロバイダの記述がある場合は下記のように書き換える。\\ "Provider=Microsoft.Jet.OLEDB.4.0;" → "Provider=Microsoft.ACE.OLEDB.12.0;" Microsoft Access データベース エンジン 2010 再頒布可能コンポーネントのインストールが必要。\\ ※Microsoft.ACE.OLEDB.12.0は、32bit版と64bit版の両方が提供されます。\\ 参照:http://www.microsoft.com/ja-jp/download/confirmation.aspx?id=13255\\ 32bitOffice環境がインストールされている場合、すでにOffice32bitが入っているためインストーラーのチェックにひっかかり、インストールが中止されてしまいます。\\ (Officeは32bitと64bitのサイドバイサイドインストールはできません。)\\ その場合、「[[https://www.microsoft.com/en-us/download/details.aspx?id=54920|Microsoft Access Database Engine 2016 Redistributable]]」をダウンロードして、コマンドプロンプト上にて quietモードでインストールを実行する。 AccessDatabaseEngine_x64.exe /quiet === プロバイダとAccesssバージョン === * Microsoft.ACE.OLEDB.12.0(Access2007,Access2010) * Microsoft.ACE.OLEDB.15.0(Access2013) * Microsoft.ACE.OLEDB.16.0(Access2016) ※Access2013は Microsoft.ACE.OLEDB.12.0 として呼び出すと例外吐くようなので、15.0として呼び出すか、上のコンポーネントを入れます。2016は12.0 or 16.0どちらでも。\\ 参照:[[http://qiita.com/unarist/items/6cc35bb9fe502ced332f|ADO.NETでExcelファイルに接続する]] ==== .NETのx86への変更 ==== ソースリストがあればx86でコンパイルし直せばいいが、実行ファイルしか存在しない場合は下記ツールを使用する。\\ .NETアプリのAnyCPUを32bitに変換するツール「[[https://msdn.microsoft.com/ja-jp/library/ms164699(VS.80).aspx|CorFlags 変換ツール (CorFlags.exe)]]」\\ 参照:[[https://moated.wordpress.com/2011/05/11/windows-%E3%82%A2%E3%82%BB%E3%83%B3%E3%83%96%E3%83%AA%E3%83%BC%E3%81%AE%E5%AF%BE%E5%BF%9Ccpux86-x64%E3%82%92%E7%A2%BA%E8%AA%8D/|アセンブリーの対応CPU(X86, X64)を確認]] === 使用方法 === corflags [.NETの実行ファイル(exe)のパス] /32BIT+ === 確認方法 === corflags [.NETの実行ファイル(exe)のパス] PE : PE32 CorFlags : 1 ILONLY : 1 32BIT : 1 Signed : 0 ※32BITに1が立つのを確認。ファイルの更新日は変更されない