VisualStudioとAccessの関係

Accessが入っているのに「アクセス」できない?

VisualStudio、その中でVB.NETを使って、Accessに接続するプログラムを作ったとき、ハマったポイントです。

Accessに外部から接続するには、ACE.OLEDBが必要

データベースに外部から接続するには、「コネクタ」や「プロバイダ」と呼ばれる、そのデータベース専用のプログラムが必要になります。

Accessの場合、Microsoft.ACE.OLEDB というプロバイダを必要とします。

2022年5月現在、Officeをインストールしようとすると、大抵の場合はサブスクリプションのOffice365になると思います。

この場合、Office365のAccessで作成されたデータベースに接続するためには、Microsoft.ACE.OLEDB.16.0が必要となります。

これをインストールしていないコンピュータで接続しようとすると、見つからない旨のエラーが出ます。

Officeインストーラーには、ACE.OLEDBが含まれていない。

まず、このエラーの発生しているパソコンには、Office365がインストールされていました。

当然ですが、Accessも含まれていて、AccessのDBファイルを作成できましたので問題はありません。

でもエラーは出ます。

つまり、Office365をインストールしただけではダメだという事です。

Access Run timeをインストールしてみる。

こういうエラーの時は、Run timeのインストールでたいてい治ります。

Run timeは、本来、対象の開発環境がインストールされていないコンピュータでプログラムを実行するためのものです。

例えば、Cの開発環境をインストールしていなくても、Cランタイムをインストールすれば、Cで開発されたプログララムは実行できます。

Accessは既にインストールされていて、開発環境はあるはずなのですが、外部からの実行環境が無いのでは仕方ありません。

こちらのサイトからダウンロードします。

いま、大抵のコンピュータは、Windows10の64bitが入っているはずなので、accessruntime_4288-1001_x64_ja-jp.exe をダウンロードします。

ところが、

Microsoft 365がインストールされているから、インストールできない?

このようなメッセージが出て、インストールできません。

ちなみに、2022年5月現在、Microsoft365をインストールすると64ビットがインストールされるため、ランタイムの32bit版である

accessruntime_4288-1001_x86_ja-jp.exe でもエラーになります。

また、Microsoft365はこのエラーメッセージに出ているクイック実行インストーラー版しかありません。

解決策は、Officeをアンインストールするしか……

Microsoft365が載っている限り、先に進めそうもないので、アンインストールします。

その上で、accessruntime_4288-1001_x64_ja-jp.exe をインストールします。

Access Run timeでもダメ?

同じエラーが発生して止まります。

Officeそのものでもだめ、Run timeでもダメってどうすればという感じですが、一度、AccessRun timeを削除します。

え?これ64ビット版の Windows10 なのだけれど?

もう一度、AccessRun timeをインストールします。

インストールするのは、accessruntime_4288-1001_x86_ja-jp.exe つまり、32ビット版用のAccessRun timeになります。

接続成功!

今度は接続に成功しました。

まとめと解決策

まとめると

  1. Microsoft365のAccessには外部から接続するためのプロバイダは含まれていない。
  2. Run timeにはプロバイダが含まれているが、Microsoft365と共存はできない。
  3. 64bitOSであっても、32bit用のAccessRun timeが必要

という事になります。

解決策として考えられるのは

  • VBでの開発用と、Officeが入ってる用でパソコンそのものを別に用意する。
  • VBでAccessを操作するのは諦める。VBAがあるのだからそれで開発する
  • データベースとしてAccessを使用するのは諦める。

などが考えられます。

パソコンを物理的に二台用意できないのであれば、過去の記事に書いたように、VMwareなどで仮想のマシンをつくり、そこでVisualStudioの開発環境を展開するのも良いかもしれません。

個人使用であれば、VMwereは無料です。難点としては、Windows10 側にライセンスが必要なので、思い切ってライセンスを買うか、定期的に開発環境を構築し直すかなどの手間は必要になります。

また、Accessそのものがプログラム言語のVBAを搭載しているので、そちらに切り換える事を検討したり、逆に、超小型コンピュータのRaspberry PiでもSQLデータベースが可動するので、DBそのものを別なものに検討するのも一つの手段です。

いずれにせよ、Microsoftって不親切だなーというはまりポイントのお話でした。

コメントを残す

メールアドレスが公開されることはありません。