カテゴリ

VBA/ASPなど

Send to Kindle

Access2010 以降、DAOの標準ライブラリが "Microsoft Office 14.0 Access database engine Object Library" となりました。

これにより、Access2010 で作成したDAOを利用したAccessVBAアプリケーションが、2010より古いバージョンで動かなくなることがあります。
"Microsoft Office 14.0 Access database engine Object Library" の代わりに "Microsoft DAO 3.6 Object Library" を参照設定で指定すれば旧バージョンでの動作は可能ですが、今度はAccess2010 64bit 版で動かなくなります。

※"Microsoft DAO 3.6 Object Library" が64bitで動かないため。

いろいろ悩んで、ひとまず、条件付きコンパイルを利用して起動時に動的に参照設定を行うことで解消してみました。
同じファイルを複数の環境で実行した場合を考え、実際には起動時に

  • 一度 DAO に対する参照設定を外す
  • 改めて、環境に合わせて参照設定をする

ように考えてみました。

Access2010 からは条件付きコンパイルに利用できる定数として、

  • VBA7 :VBAのバージョンがVBA7ならTrue
  • Win64 :実行環境が64bitならTrue(実際にはOSではなくOfficeのbitの模様)

が導入されているので、それを利用します。
ただ、勉強不足で従来のDAOが動く環境を厳密には特定できていないため、

  • VBA7かつ64bit環境なら"Microsoft Office 14.0 Access database engine Object Library"
  • それ以外なら従来のDAO3.6を参照設定してみて、エラーなら "Microsoft Office 14.0 Access database engine Object Library"を参照

としました。

コメント