Accessについて色々

DBエンジン

・Microsoft.JET.OLEDB.4.0
Access2002対応, 2007非対応
(x86専用だが、WOW64で動く)

・Microsoft.ACE.OLEDB.12.0
Access2002, 2007対応

ADOとDAOの違い

DAOのほうが古く、ADOの方が新しい。
(DAOはAccess初期から、ADOは2000から)

DAOはJETエンジンを対象に開発され、途中からODBC接続も可能になったが、現在、利用することは少ない。

ADOはODBCの代わりにOLEDBを利用する。OLE DB Provider for ODBCを使ええばODBCも可能。

ADO の場合

VBAでの利用

DAO の場合

CreateObject(“DAO.DBEngine.36”)
2002対応, 2007非対応

CreateObject(“DAO.DBEngine.120”)
2002, 2007対応

VBAでの利用

取得のテスト

参考にその他のプロバイダ指定方法

Provider=MSDAORA:Oracle
Provider=SQLOLEDB:SQL Server
Provider=MSDASQL:ODBC

OLEDBドライバがない

ExcelからAccess接続したいなと思ったら、インストール可能な ISAM ドライバが見つかりませんでしたと言われた。

どうやら以下を読むと、2016/32bit(サブスクリプション)がクイック形式で入っていて、ドライバが入らないということらしい。

https://blogs.technet.microsoft.com/officesupportjp/2016/09/06/not_available_access_odbc_oledb_outside_c2r_applications/

https://blogs.technet.microsoft.com/officesupportjp/2016/09/08/howto_c2r_or_msi/

MySQLへのエクスポート

DSNを作っておくと自動でエクスポートできるとのこと。

http://dev.mysql.com/downloads/connector/odbc/
からmsiファイルでインストール。

コントロールパネル > 管理ツール > ODBCデータソース > ユーザー DSN > 追加
Accessを起動してテーブルデザインをエクスポート先のMySQLと合わせる。
テーブルを選択、右クリックからエクスポート > ODBC データソース
(すでに存在しているテーブルに上書きはできない)