0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Office 2019/365移行でmdb接続が失敗する理由とその対応

0
Last updated at Posted at 2026-04-01

状況まとめ

  • 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 ドライバーがコンピューターに共存するには、次の手順に従います。

  1. コンピューターからすべての Access ドライバーバージョンをアンインストールします。
  2. デスクトップのレジストリ エディターに移動し (検索バーで検索できます)、次の両方のパス (存在する場合) に移動します。
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Common\FilesPaths
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\16.0\Common\FilesPaths
  3. 上記の両方のパスに "mso.dll" レジストリ キーが存在するかどうかを確認します。 キーが存在する場合は、すべてのドライバーをアンインストールしていないことを意味します。 システム上のドライバーを確認し、すべての Access ドライバーをアンインストールし、手順 2 で説明されているレジストリ エディターのパスをもう一度確認します。
  4. Microsoft 公式 Web サイトから新しいバージョンの Microsoft Access データベース エンジンをダウンロードし、コマンド プロンプト (CMD) と 2016 再頒布可能パッケージのコマンド AccessDatabaseEngine_x64.exe /quietを使用して 64 ビット ドライバーをインストールします。
  5. レジストリ エディターに戻り、次のパスにある "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) が含まれています。

Version Runtime
AccessRuntime 365 https://support.microsoft.com/ja-jp/office/microsoft-365-access-runtime-%E3%82%92%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%97%E3%81%A6%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B-185c5a32-8ba9-491e-ac76-91cbe3ea09c9
AccessRuntime 2016 https://www.microsoft.com/en-us/download/details.aspx?id=50040
AccessRuntime 2013 https://www.microsoft.com/ja-jp/download/details.aspx?id=39358
AccessRuntime 2010 https://www.microsoft.com/ja-jp/download/details.aspx?id=39643
https://www.microsoft.com/ja-jp/download/details.aspx?id=39644

Accessランタイムは、32bit版と64bit版が提供されていますが、同一バージョンの Office について、32bit版と64bit版を1つのPCで共存できないのは前述のとおりです。バージョンが 16.0 の64bit版Officeがインストールされている環境には、バージョンが 16.0 の 32bit版Accessランタイムはインストールできません。インストール時に以下のエラーになります。

setup_error.png

/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 ファイル形式では、ユーザー レベルのセキュリティはサポートされていません。

出典: 使用が推奨される Access ファイル形式

プロバイダとファイル形式の対応は次のとおりです。

プロバイダ ビット数 対応するファイル形式
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 として動作

ここまでの整理から、冒頭の結論が導かれます。

追記:エラーメッセージ「この種類のオブジェクトの操作はサポートされていません。」が表示される場合

上記に対応してもうまくいかず「この種類のオブジェクトの操作はサポートされていません。」のエラーが表示される場合は、セキュリティ強化でリモートテーブルへのアクセスがブロックされている可能性があるため、下記を参照ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?