Accessをインストールしてるのに、タイトルのエラーが出る・・・なんで?
知人
SEパパ
もしかしたらビルド時のターゲットCPUの設定に問題があるかもしれないね。
アプリ実行時に「’Microsoft.ACE.OLEDB.12.0’プロバイダーがローカルマシンに登録されていません。」と表示されてしまう原因とその対処法を紹介します。
クリックできる目次
Microsoft.ACE.OLEDBエラーの詳細
con.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0; " &
"Data Source=" & p_fileNm & ";" &
"Extended Properties=""Excel 12.0;HDR=YES;IMET=1;"""
' コネクションの設定
cmd.Connection = con
' SQL文の設定
cmd.CommandText = "Select * FROM [" & p_sheetNm & "$] "
' SELECTコマンドの設定
da.SelectCommand = cmd
' データを取得する
da.Fill(excelToDt) ←ここでエラー
これは知人から入手したVB.NETのコードです。
最下行で本記事タイトルのエラーが発生していました。
Microsoft.ACE.OLEDBエラーの原因と対処法
Accessをインストールしている場合
ターゲットCPUの設定が合っていない可能性があります。
例えば、Access(x64)をインストールしている場合、ターゲットCPUが(x86)でビルドされたアプリからMicrosoft.ACE.OLEDB.12.0’プロバイダーは使用できません。
Any CPUの場合でも(x86)環境と自動判定された場合は、同様に動作しないため注意が必要です。
このビット数の不一致が原因で、タイトルのエラーが発生する可能性がありますので、ターゲットCPUを設定し直してリビルドしましょう。
Accessをインストールしていない場合
以下をインストールすればエラーを解消できます。
ただしこちらも(x64)と(x86)の2種類があるので要注意です。
- AccessDatabaseEngine(32bit x86)
- AccessDatabaseEngine(64bit x64)
Microsoft.ACE.OLEDBエラーまとめ
知人
ターゲットCPUを変更してリビルドしたら動いた!
アプリ実行時に「’Microsoft.ACE.OLEDB.12.0’プロバイダーがローカルマシンに登録されていません。」と表示されるときは、AccessとターゲットCPUのビット数が合っていない可能性があります。
ターゲットCPUの設定を確認してリビルドしましょう!
最後までお読みいただきありがとうございました。