【HTA+ADODB】プロバイダーが見つかりません。正しくインストールされていない可能性があります。
HTAファイル内に正しく記述した ADODB にコネクトできない。そんな、回避策の備忘録です。
HTAファイル
IE11
MS Access 2019(64bit)
Provider="Microsoft.ACE.OLEDB.12.0";
ADODBに接続を試みるソースです。空のExcelファイルをひとつ用意して、6行目のパスを書き換えて下さい。
ファイルパスが「C:\sample\test001\data.xlsx」なら6行目は「C:\\sample\\test001\\data.xlsx」となる。(\\とする)
ソースコードは、test.hta でデスクトップに保存するといいでしょう。

「loadDatabase」ボタンClick

成功時:

ショートカットで回避するか、公式ページから再頒布可能コンポーネントを入手してインストールして回避するか。
都合の良い方を選択します。
まずは、インストールが必要なのかを確認します。
「コントロールパネル」→「管理ツール」→「ODBC データ ソース (64 ビット)」
プラットフォーム欄が「64 ビット」の表示なら必要です。「32/64 ビット」の表示なら不要です。
必要なら、32bit版コンポーネントをインストールしてエラーを回避させます。
不要なら、別の原因で掲題のエラーが出ています。
以下のURLから32ビット版コンポーネントの入手が可能です。
https://www.microsoft.com/ja-JP/download/details.aspx?id=54920
accessdatabaseengine.exe を選択してください。
X64 が付くファイルは不要です。
Chorome,Edge,FireFox等はサポート対象外のため動作しない。
IE11のサポートは2021年6月15日で終わり、IE11上のActiveXObjectは使用できなくなります。
EdgeのIEモードで使いましょう。使えるのかな・・・?
環境
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モードで使いましょう。使えるのかな・・・?







ディスカッション
コメント一覧
まだ、コメントがありません