Accessの扱い方

Microsoft Access32Bit版で動作しているアプリを64 Bit版に変更する方法と具体的に修正する箇所

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宣言・外部ライブラリ に関しては注意すべき重要な変更点があります。

  1. Access 64Bit版をインストール

    • 既存の Access(32Bit)をアンインストール後、Office 365 のインストーラから 64Bit版を選んでインストール。

    • ファイル(.accdb / .mdb)はそのまま使用可。

  2. 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ビット対応にするには、PtrSafeLongPtr を追加します:

#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.OCXMSCOMCT2.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版に対応しているかを確認し、必要であれば再設定を検討してください。 

32ビット版Officeをアンインストールする
  1. Officeを完全にアンインストールする:
    Control PanelからOfficeアプリケーションをアンインストールします。
  2. 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




コメント