知人より「64bitのOfficeでエラーが発生する」との連絡を受けて解決したときのメモです。
VBAでDAO(例えばOpenDatabase()など)を実行したときに、「ActiveX コンポーネントはオブジェクトを作成できません」と表示されてお困りの方は、ぜひ参考にしてくださいね!
クリックできる目次
Windows10 VBA(64bit)のDAOエラー詳細
oracleのテーブルを開くためにDAOのOpenDatabase()を実行すると、
と表示されました。
詳しくは、次のコードのOpenDatabase()でエラーが発生します。
Dim DB As DAO.Database Dim RS As DAO.Recordset Dim Path As String 'ここでエラーが発生↓↓ Set DB = OpenDatabase(Path, , True)
Windows10 VBA(64bit)のDAOエラー原因
実は、64bitのOfficeでは「Microsoft DAO 3.6 Object Library」を使うことができません。
これがエラーの原因ですね。
そしてこのとき、ExcelまたはAccessを起動後に、Alt + F11でVBA実装画面を開き、ツールタブ→参照設定を表示すると、
☑ Microsoft DAO 3.6 Object Library
このように、DAOにチェックが付いています。
64bit環境下では、DAOが使えませんので、このチェックを外して、別のモジュールを使います。
Windows10 VBA(64bit)のDAOエラー対処法
先ほどと同様に、Alt + F11でVBA実装画面を開き、ツールタブ→参照設定を表示します。
DAOのチェックを外して、その代わりに、「Microsoft Office 16.0 Access database engine Object Library」にチェックを付けます。
□ Microsoft DAO 3.6 Object Library
☑ Microsoft Office 16.0 Access database engine Object Library
この状態で、先ほどのコードを実行してみると、、、
Dim DB As DAO.Database Dim RS As DAO.Recordset Dim Path As String Set DB = OpenDatabase(Path, , True)
ということで、無事64bit環境でもDAOを動作させることができました。
Windows10 VBA(64bit)のDAOエラーまとめ
VBA(64bit)でDAO(例えばOpenDatabase()など)を実行したときに、「ActiveX コンポーネントはオブジェクトを作成できません」エラーが表示される場合の原因と対処法を紹介しました!
今回のケースでは、以下の通り、参照設定を変更するだけで解決しましたよ。
□ Microsoft DAO 3.6 Object Library
☑ Microsoft Office 16.0 Access database engine Object Library
同じ現象でお困りの方はぜひ参考にしてくださいね!