2025-11-17、
現在、私も、やっと、64Bit環境のAccessで32Bit版のAccessアプリを起動して、初期状態でも小じるエラーを少しだけとり除き、メニュー画面や保守画面を表示できるようになりましたが、これからです。
どうやら、この先はそんなに修正する箇所は、予想では少ないようで、エラーが発生している部分は、「はがきや封筒の印刷」で使用したAccess内のツールで使用したVBA部分を修正して、作り直す必要がある様です。
これから、一か月くらいかけて、ぼちぼちと、修正する箇所や直し方を出来る限り具体的に記載してゆきます。
1.なぜ、Accessの64bit版に変換する必要があるのか?
Accessには、 Office2010から32bit版と64bit版があり、最近のWindowsPCやOffice環境では64bit版が主流になっています。変換が必要になる主な理由は以下の通りです。
・互換性の問題 32bit版で作成されたVBAコードやAPI呼び出しが、64bit版ではそのままでは動作しないことがあります。
・ActiveXコントロールの非対応 一部の32bit専用のActiveXコントロール(例:カレンダーやバーコード)が64bit環境では使えない場合があります。
・外部ライブラリやDLLの非対応 外部のDLLやOCXファイルが64bitに対応していないと、参照エラーが発生します。
・ODBC設定の違い 32bitと64bitではODBCの設定ツールが異なるため、リンクテーブルの再設定が必要になることもあります。
■制約
あと、Officeのパッケージの場合、「Access」だけ32bit版、他のWord、Exelなどを64bit版に混在することは、できないと思います。どちらか一方ですので注意してください。
ただ、 Windows(OS)もすでに、Windows10、11など64bit版が主流になっていますので、OfficeのAccessも64bit版で使いたいですね。そこで、32bit版のAccessで作成したシステムを64bit版のAccessで起動するとエラーが発生して使えませんので、これを何とかして使えるようにしましょう。
ちょっと、メンドクサイのですが。
2.全体の流れ
Microsoft Access を 32Bit版 → 64Bit版 に変更した際には、アプリ(.accdb / .mdb ファイル)そのものは基本的にそのまま動作しますが、VBAコード・API宣言・外部ライブラリ に関しては注意すべき重要な変更点があります。
-
Access 64Bit版をインストール
-
既存の Access(32Bit)をアンインストール後、Office 365 のインストーラから 64Bit版を選んでインストール。
-
ファイル(.accdb / .mdb)はそのまま使用可。
-
-
Accessアプリ(ファイル)を開く
-
最初に VBA のコンパイルエラーなどが出たら、以下の箇所を修正。
-
3.主な修正が必要な箇所
① Declare ステートメント(Windows API宣言)
■Access VBA の 32Bit版では以下のように宣言されていました:
Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _
(ByVal lpBuffer As String, nSize As Long) As Long
■これを 64ビット対応にするには、PtrSafe と LongPtr を追加します:
#If VBA7 Then
Declare PtrSafe Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _
(ByVal lpBuffer As String, ByRef nSize As Long) As Long
#Else
Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _
(ByVal lpBuffer As String, ByRef nSize As Long) As Long
#End If
🔹 VBA7 は Access 2010以降すべて該当します。
🔹 LongPtr はポインタ(アドレス)を扱う変数に使用します(32bit: Long / 64bit: 64bit整数)。
代表的な修正例
| 修正対象 | 32bit | 64bit |
|---|---|---|
| HWND / ポインタ | Long |
LongPtr |
| API宣言 | Declare Function ... |
Declare PtrSafe Function ... |
② 外部DLL / ActiveXコントロール(OCX)の参照設定
Accessの 参照設定(VBAエディタ → ツール → 参照設定) で以下のような問題が発生します:
-
32ビット専用のDLLやOCX(例:
MSCOMCTL.OCX、MSCOMCT2.OCX)が 読み込めない -
一部の古いActiveX(例:TreeView, ListView)も使用不可
対策
-
64Bit版の代替を使う
-
もしくは同機能をVBAフォームやクラスで代替実装
-
特に以下の参照は見直し必須:
-
Microsoft Windows Common Controls
-
Microsoft Office xx.x Object Library
-
Microsoft DAO / ADO Libraries
-
③ 外部ファイルのパス・ドライバ
ODBC接続やExcel連携などで以下の修正が必要な場合があります:
-
ODBCドライバ名が変わる
-
例:
Microsoft Access Driver (*.mdb, *.accdb)→ 64bit用ドライバへ変更
-
-
Excel, Text, SQL Server などの接続文字列
32bitドライバと64bitドライバを明示的に切り替える必要があります。
対策
ODBC接続を使う場合:
-
Windowsの「ODBCデータソース アドミニストレータ(64Bit)」で設定し直す。
-
(場所)
C:\Windows\System32\odbcad32.exe
※混乱しやすいですが、SysWOW64\odbcad32.exeは32bit用です。
④ APIで使う構造体やコールバック関数
API呼び出しに構造体(Type)を渡している場合も、ポインタ型を LongPtr に変更します。
例:
Type POINTAPI
x As Long
y As Long
End Type
はそのままでOKですが、ポインタを格納する箇所(例:hWnd As Long)は
hWnd As LongPtr
とします。
⑤ Declare文を一括修正するツール
Microsoft が提供している公式変換ツールがあります。
-
公式ツール名:「Code Advisor for Access」
-
AccessのVBAコードをスキャンして、64Bit非対応のAPI宣言を検出・修正候補を提示します。
まとめ(チェックリスト)
| 項目 | 対応要否 | 対応内容 |
| Declare文(API) | 必須 | PtrSafe / LongPtr に修正 |
| ActiveXコントロール | 必須 | 64bit対応版に置換または削除 |
| ODBC接続 | 必須 | 64bitドライバで再設定 |
| 参照設定 | 要確認 | 不明な参照があれば修正 |
| コンパイル | 必須 | VBAコンパイルして確認 |
その他の注意点
| 項目 | 内容 |
| ActiveXコントロール | 一部の32Bit専用コントロール(例:カレンダー、バーコード)は64Bit環境で動作しないことがあります。64bit対応版に置換または削除 |
| 外部DLL/OCXファイル | 64Bit対応のものに差し替える必要があります。 |
| ODBC接続 | 32Bitと64BitでODBC設定ツールが異なるため、64bitドライバで再設定が必要になる場合があります。 |
| 参照設定 | VBAで参照しているライブラリが64Bit対応か確認してください。 |
■注意事項
32ビット版のAccessアプリケーションを64Bit版に変更するには、直接のアップグレードはできないため、64Bit版のAccessを別途インストールする必要があります。
これには、既存の32Bit版Officeをアンインストールし、64Bit版をインストールする手順が必要です。また、アプリケーションがアドインなど64Bit版に対応しているかを確認し、必要であれば再設定を検討してください。
- Officeを完全にアンインストールする:
Control PanelからOfficeアプリケーションをアンインストールします。 - Officeを完全に削除する:
Officeは完全に削除されない場合があるため、可能であればMicrosoftが提供する「Microsoft Support and recovery assistant」などのツールを使用して、残留物を完全に削除します。
■ACCESSファイル32bitを64bitにコンパイルする方法はありませんか?
■Office 2010 の 32 ビットバージョンと 64 ビットバージョンとの互換性
http://msdn.microsoft.com/ja-jp/library/office/ee691831(v=office.14).aspx
■64 ビット Visual Basic for Applications の概要
http://msdn.microsoft.com/ja-jp/library/office/gg264421.aspx
—関連記事—
・【Access】Accessで作成した業務システムを32bit版から64bit版に変換する方法です。
Sponsored Links

