【HTA+ADODB】プロバイダーが見つかりません。正しくインストールされていない可能性があります。
環境
Win10HTAファイル
IE11
MS Access 2019(64bit)
Provider="Microsoft.ACE.OLEDB.12.0";
htaファイルのソース
<html> <head> <title>ado connect test</title> </head> <script type="text/javascript"> var filepath = "C:\\data.xlsx"; //Data SourceのExcelファイルをフルパス指定 var readonly = 1; var hdr = 1; function loadDatabase(){ _loadDatabase(filepath, readonly, hdr); return false; } function _loadDatabase( filepath, readonly, hdr ){ var ado = new ActiveXObject("ADODB.Connection"); var connect = []; connect.push('Provider="Microsoft.ACE.OLEDB.12.0"; Data Source="' + filepath + '"; Extended Properties="Excel 12.0;IMEX=1;HDR=' + (hdr ? 'Yes' :'No') + ';ReadOnly=' + (readonly ? 1 : 0) + ';"'); var i = 0; while ( i <= connect.length - 1){ try{ ado.Open(connect[i]); alert('Connected Successfully.'); ado.Close(); break; }catch(e){ alert(e.message); } i++; } } </script> <body> <button onclick="loadDatabase();">loadDatabase</button><br /> </body> </html>
ADODBに接続を試みるソースです。空のExcelファイルをひとつ用意して、6行目のパスを書き換えて下さい。
ファイルパスが「C:\sample\test001\data.xlsx」なら6行目は「C:\\sample\\test001\\data.xlsx」となる。(\\とする)
ソースコードは、test.hta でデスクトップに保存するといいでしょう。
htaファイルの実行画面
「loadDatabase」ボタンClick
結果
失敗時:成功時:
失敗時の回避方法
回避策は2点あります。ショートカットで回避するか、公式ページから再頒布可能コンポーネントを入手してインストールして回避するか。
都合の良い方を選択します。
ショーカットで回避する。
作成するシートカットのリンク先の冒頭に %WinDir%\System32\mshta.exe を追加してあげる。- このHTAファイルへのショートカットを作成する。
- ショートカットのプロパティを開いて、以下の様に設定する。
- 保存
- ショートカットを実行して。「loadDatabase」ボタンをクリックする。
- リンク先を「%WinDir%\System32\mshta.exe C:\test.hta」(HTAファイルへのフルパス)
再頒布可能コンポーネントで回避する。
以下の公式URLからAccessDatabaseEngineを入手してインストールする。まずは、インストールが必要なのかを確認します。
「コントロールパネル」→「管理ツール」→「ODBC データ ソース (64 ビット)」
プラットフォーム欄が「64 ビット」の表示なら必要です。「32/64 ビット」の表示なら不要です。
必要なら、32bit版コンポーネントをインストールしてエラーを回避させます。
不要なら、別の原因で掲題のエラーが出ています。
以下のURLから32ビット版コンポーネントの入手が可能です。
https://www.microsoft.com/ja-JP/download/details.aspx?id=54920
accessdatabaseengine.exe を選択してください。
X64 が付くファイルは不要です。
余談
ちなみに、ActiveXObjectは InternetExplorer のみで動作する。Chorome,Edge,FireFox等はサポート対象外のため動作しない。
IE11のサポートは2021年6月15日で終わり、IE11上のActiveXObjectは使用できなくなります。
EdgeのIEモードで使いましょう。使えるのかな・・・?
ディスカッション
コメント一覧
まだ、コメントがありません