状況まとめ
- Office 2016のサポート終了により、Office 2019以降、もしくは365への移行が進んでいる
- これらのOfficeはデフォルトでは64bitでインストールされる。なお、32bitのプログラムから64bitのライブラリは呼び出せない
- これらのOfficeのインストールテクノロジは、Windows Installer(MSI)ではなく、ClickToRun(C2R)である。なお、この方式では、AccessドライバはOffice以外から利用可能な形でインストールされない
- mdbファイルへのアクセスにJetを利用していたプログラムは、32bitで動作していため、上記2つの理由により、Officeが2019以降の環境では動かないことが多い
- この対応として、32bitのAccessEngineインストールする方法があるが、同一バージョンの32bitと64bitのオフィスコンポーネントの同居はサポートされていない。既存の関連付けやWindowsUpdateで問題が起きる可能性がある
- よって、ユーザー環境のOfficeのbit数に合わせて、プログラムを個別に提供する、x86環境用の「setup.exe」とx64環境用の「setup_x64.exe」を提供するのが解決策であると考えられる
- ビルド設定のAnyCPUは、その動作をOSの動作bit数に依存するので、この問題の解決に利用できない
結論
mdb形式のAccessファイルを利用するシステムが、Office 2019/365移行で動かなくなった場合、プロバイダをACEに変更し、32bit版と64bit版のインストーラをそれぞれ提供するのが、公式のサポート情報に沿った対応になると思われます。
| 提供するシステム | ユーザー側のセットアップ作業 | |
|---|---|---|
| これまで | JETを利用した32bitシステム | 提供されたシステムをインストール |
| これから | ACEを利用した32/64bitシステム (32bit版と64bit版のインストーラをそれぞれ提供) |
①自PCのOfficeと32/64bitが一致するAccessRuntimeをインストール ②自PCのOfficeと32/64bitが一致する提供されたシステムをインストール |
詳細は以下のとおりです。
Office 2016 のサポート終了で表面化した「mdb接続不能」問題
下記のとおり、Office 2016 のサポート期間が終了し、サポート継続のために、2019以降/365への移行が必要となりました。
| バージョン | 発売日 | メインストリーム サポート | 延長サポート |
|---|---|---|---|
| Office 2016 | 2015/9/22 | 2020/10/13 | 2025/10/14 |
| Office 2019 | 2018/9/24 | 2023/10/10 | 2025/10/14 |
| Office 2021 | 2021/10/5 | 2026/10/13 | なし |
| Office 2024 | 2024/10/1 | 2029/10/9 | なし |
出典: ご存じですか? Office にはサポート期限があります
各バージョンのインストールテクノロジ及びデフォルトインストールでのbit数は次のとおりとなっています。
| Office リリース | バージョン | インストール テクノロジ | デフォルトのアーキテクチャ |
|---|---|---|---|
| Microsoft 365 | 16.0 | クイック実行 | 64bit |
| Office 長期サービス チャネル (LTSC) 2024 | 16.0 | クイック実行 | 64bit |
| Office LTSC 2021 | 16.0 | クイック実行 | 64bit |
| Office 2021 | 16.0 | クイック実行 | 64bit |
| Office 2019 | 16.0 | クイック実行 | 64bit |
| Office 2016 | 16.0 | クイック実行、Windows インストーラー (MSI) | 32bit |
| Office 2013 | 15.0 | クイック実行、Windows インストーラー (MSI) | 32bit |
| Office 2010 | 14.0 | クイック実行、Windows インストーラー (MSI) | 32bit |
出典: 同一コンピューター上に異なるバージョンの Office、Project、Visio をインストールするためのサポート対象シナリオ
32bit版と64bit版のどちらのアーキテクチャを選択するかは以下のガイドがあります。ここで大事なことは下記の説明のとおり、プログラムと Access のドライバー(またはプロバイダ)を 32bit か 64bit かに統一しないと利用できないということです。
32 ビット版の Office または Microsoft 365 でコンパイルされたアドインや MDE ファイルは、64 ビット版の Office または Microsoft 365 では実行できません。また、その逆も同様です。
出典: 64 ビット版または 32 ビット版の Office を選択する
また、32bit版と64bit版は同一PCで共存できません。
32 ビット版と 64 ビット版の Office を共存させることはできません。
出典: 異なるバージョンの Office を同じ PC にインストールして使う
そして、mdb接続によく使われていた Jet は 32bit版しかありません。また、ACE をインストールする場合は、インストール済み Office とアーキテクチャが一致している必要があります。
Microsoft OLE DB Provider for Microsoft Jet と Microsoft Access ODBC ドライバー (Jet ODBC ドライバー) は、Microsoft Office Access データベースへのインターフェイスを提供します。 Microsoft OLE DB Provider for Jet と Jet ODBC ドライバーは、32 ビット バージョンでのみ使用できます。
デバイスで許可されるアーキテクチャは 1 つだけです。 ACE のアーキテクチャは、そのコンピューター上の Office インストールのアーキテクチャと一致している必要があります。
出典: Microsoft OLE DB Provider for Jet および Jet ODBC ドライバーは、32 ビット バージョンでのみ使用できます
ただし、PowerAutomate のサポート情報では、32bitと64bitのドライバーを共存させる方法が Microsoft より案内されています。
32 ビットと 64 ビットの両方の Access ドライバーがコンピューターに共存するには、次の手順に従います。
- コンピューターからすべての Access ドライバーバージョンをアンインストールします。
- デスクトップのレジストリ エディターに移動し (検索バーで検索できます)、次の両方のパス (存在する場合) に移動します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\FilesPaths- 上記の両方のパスに "mso.dll" レジストリ キーが存在するかどうかを確認します。 キーが存在する場合は、すべてのドライバーをアンインストールしていないことを意味します。 システム上のドライバーを確認し、すべての Access ドライバーをアンインストールし、手順 2 で説明されているレジストリ エディターのパスをもう一度確認します。
- Microsoft 公式 Web サイトから新しいバージョンの Microsoft Access データベース エンジンをダウンロードし、コマンド プロンプト (CMD) と 2016 再頒布可能パッケージのコマンド
AccessDatabaseEngine_x64.exe /quietを使用して 64 ビット ドライバーをインストールします。- レジストリ エディターに戻り、次のパスにある "mso.dll" レジストリ キーとその値を削除します。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\FilesPaths最後に、コマンド プロンプト (CMD) と 2016 再頒布可能パッケージのコマンド
AccessDatabaseEngine.exe /quietを使用して、32 ビット ドライバーをインストールします。 これにより、32 ビットドライバーと 64 ビット ドライバーの両方がコンピューターに共存できるようになります。
出典: Access データベース エンジン OLE DB への接続を確立できません
しかし、自分のPCや自組織内であればともかく、そうでない環境にレジストリの編集を要求するのは、ハードルが高すぎます。
また、そもそも、Office 2019以降のクイック実行形式では、Access のドライバがインストールされません。解決策の欄で「必要な追加コンポーネント 」がなくなったかのような説明がありますが、そうなる環境は限定的なようです。
Office のクイック実行インストールは、ローカル オペレーティング システム上の分離された仮想環境で実行されます。 Office 以外の一部のアプリケーションでは、分離された環境でインストールを検索する場所が認識されない場合があります。
出典: Office クイック実行アプリケーションの外部で Access ODBC、OLEDB、または DAO インターフェイスを使用できない
Access ランタイム
このため、Accessランタイムが別途、提供されています。
Microsoft 365 Access Runtime を使用すると、コンピューターに Microsoft Office がインストールされていないユーザーや、Access を含まないバージョンの Microsoft Office に Access 365 アプリケーションを配布できます。 Microsoft 365 Access Runtime には、(OLEDB、ODBC、DAO) インターフェイスを介して Microsoft Office システム ファイルと Microsoft Office 以外のアプリケーション間のデータ転送を容易にするために使用できる Access Database Engine (ADE) が含まれています。
Accessランタイムは、32bit版と64bit版が提供されていますが、同一バージョンの Office について、32bit版と64bit版を1つのPCで共存できないのは前述のとおりです。バージョンが 16.0 の64bit版Officeがインストールされている環境には、バージョンが 16.0 の 32bit版Accessランタイムはインストールできません。インストール時に以下のエラーになります。
/quietによるインストールはサイレントモードで、通常のインストールプロセスの動作条件チェックをスキップしているようです。
では、同じバージョンがダメなら、バージョン 16.0 でないもの(≒より古いのもの)をインストールすればよいかというと、ラインタイムのサポート期間は対応する Officeリリースと同じであると考えられるので、前述のとおりサポート終了しています。AccessRuntime 2016 のダウンロードページに記載されているサポート期間は Office 2016 と同じとなっています。
注: Access 2016 ランタイムのサポートは 2025 年 10 月 14 日に終了しました。推奨される代替製品はMicrosoft 365 Access ランタイムです。
利用可能になるプロバイダ
利用可能なプロバイダは 32bit版か 64bit版の PowerShell で (New-Object System.Data.OleDb.OleDbEnumerator).GetElements()|ft を実行することで確認できます。
Hyper-V の「Windows 11 開発環境(Windows 11 Enterprise Evalution, Version 22H2, 64bit os)」では以下のとおりとなりました。
| 32bit OleDBプロバイダ | 64bit OleDBプロバイダ | |
|---|---|---|
| Windows 11 初期状態 | Microsoft.Jet.OLEDB.4.0 | |
| Access Runtime 365 (32bit)をインストール後 |
Microsoft.ACE.OLEDB.12.0 Microsoft.ACE.OLEDB.16.0 |
|
| Access Runtime 365 (64bit)をインストール後 |
Microsoft.ACE.OLEDB.12.0 Microsoft.ACE.OLEDB.16.0 |
出典: OleDbEnumerator.GetElements メソッド
ファイル形式
Accessのファイル形式は、mdb と accdb があり、accdb が推奨されていますが、accdb では以下の機能が使用できないため、移行できないケースがあることに留意ください。
データベース レプリケーション .accdb ファイルではレプリケーションを使用できません。
ユーザー レベルのセキュリティ .accdb ファイル形式では、ユーザー レベルのセキュリティはサポートされていません。
プロバイダとファイル形式の対応は次のとおりです。
| プロバイダ | ビット数 | 対応するファイル形式 |
|---|---|---|
| Microsoft.Jet.OLEDB.4.0 | 32bit | *.mdb |
| Microsoft.Ace.OLEDB | 32bit/64bit | *.mdb, *.accdb |
アプリケーションのビルド設定
実行ファイルとライブラリはbit数が揃っている必要があります。
作成したアプリケーションが何bit版で動作するかは以下のようになります。32bitで動作しているかは「タスクマネージャ」で確認できます。
| ビルド設定 (Platform Target) |
32-bit優先 | 32bit OSでの動作 | 64bit OSでの動作 |
|---|---|---|---|
| Any CPU | OFF | 32bit として動作 | 64bit として動作 |
| Any CPU | ON | 32bit として動作 | 32bit として動作 |
| x86 | (設定不可) | 32bit として動作 | 32bit として動作 |
| x64 | (設定不可) | 実行不可 (エラー) | 64bit として動作 |
ここまでの整理から、冒頭の結論が導かれます。
追記:エラーメッセージ「この種類のオブジェクトの操作はサポートされていません。」が表示される場合
上記に対応してもうまくいかず「この種類のオブジェクトの操作はサポートされていません。」のエラーが表示される場合は、セキュリティ強化でリモートテーブルへのアクセスがブロックされている可能性があるため、下記を参照ください。
