Access 32bitから64bitへの移行方法|VBA・ODBC・ACCDEの注意点

概要

この記事の結論
Accessの32bitから64bitへの移行は可能ですが、そのまま動くかはVBAや外部部品に依存します。Windowsとは別にAccessのbit数を確認し、API宣言、OCX・DLL、ODBC、ACCDEを点検します。原本を保管し、別の検証環境で修正・動作確認を行ってから切り替えるのが基本です。

この記事でわかること

  • 移行できる条件と32bitを継続する判断
  • Office・Access・外部部品の事前点検
  • PtrSafeとLongPtrの正しい使い分け
  • ODBC・ACCDE・Runtimeの対応
  • 検証から本番切替・切り戻しまで

この記事の主な内容

  1. 32bitから64bitへ移行できる条件と互換性
  2. 移行前に確認する5つの項目
  3. VBAを64bitへ対応させる方法
  4. OCX・DLL・ODBC・ACCDEを64bit環境に合わせる
  5. 検証から本番切替までの5段階と切り戻し
  6. 移行後に動かないときの確認順と相談の目安
  7. よくある質問

想定読了時間:約20分


1 32bitから64bitへ移行できる条件と互換性

Accessの64bit移行とは、64bit版Accessで既存業務を実行できるように、コード・外部部品・接続設定・配布ファイルを確認して整える作業です。ファイルをコピーして開ける場合もありますが、ボタン、帳票、外部データ接続まで正常に動くことを確かめる必要があります。

本記事はWindows x64上のデスクトップ版Accessを対象にします。ARM64端末や古いAccess専用機能を使うシステムは、同じ条件で動くと判断せず、利用する製品・部品ごとに互換性を確認してください。

そのまま使える場合と改修が必要な場合

標準機能中心のACCDBは、大きな修正をせずに利用できることがあります。一方、Windowsの機能を呼び出すAPI、外部の画面部品、コンパイル済みの配布ファイルには、bit数の影響が出やすくなります。まず対象を次のように分けると、調査の抜けを減らせます。

対象確認すること対応の方向性
ACCDB・MDB対象Accessで開ける形式か、内部の処理に依存関係があるか原本のコピーで確認し、必要な箇所を修正
VBA・参照設定APIの宣言、型、参照先の有無宣言・変数・参照先を確認してコンパイル
OCX・DLL64bit対応品が提供されているか対応版を導入するか機能を置き換える
ODBC接続Accessに合うドライバと接続設定か対応ドライバを用意して接続・更新を検証
ACCDE・MDE作成環境と実行環境のbit数が合うか元ファイルから対応環境向けに再作成

高速化や容量不足の解消とは分けて考える

64bit化すると利用できるメモリの範囲は広がりますが、すべてのAccess処理が速くなるわけではありません。大量のデータを端末へ転送するクエリや、通信の遅延が原因なら、データの取り方や接続構成も見直します。効果は同じデータ・操作条件で測定しましょう。

また、ACCDB・MDBの容量上限は原則2GBからシステム領域を除いた値で、64bit化しても解除されません。容量不足が主な問題なら、不要データの整理や、データをSQL Serverなどへ移す構成を別途検討します。

代替できない32bit部品が残る場合は、サポートされる32bit環境で当面の運用を続ける選択もあります。ただし、その判断にはOffice全体の運用方針、部品の保守状況、将来の置換計画を含めてください。


2 移行前に確認する5つの項目

移行前は、利用者PCとAccessファイルをセットで棚卸しします。動いている旧PCをすぐに入れ替えず、原本・設定・実行環境を確認できる状態を残すと、原因の比較や切り戻しに役立ちます。

1 WindowsとOfficeの構成を確認する

Windowsが64bitでも、Accessは32bitという組み合わせがあります。Accessでは[ファイル]から[アカウント]を開き、[Accessのバージョン情報]でbit数を確認します。製品や表示言語でメニュー名が異なる場合は、Microsoftのバージョン確認手順を参照してください。

製品名・バージョン・Build・bit数に加え、Microsoft 365の更新チャネル、他のOffice製品、Runtimeの有無を記録します。Application.Versionの「16.0」だけで製品世代を特定せず、バージョン情報画面の内容を残してください。

64bit版WindowsでもAccessは32bit版と64bit版に分かれるため、Access側でbit数を確認する関係

2 編集可能な原本を確保する

ACCDEなら元のACCDB、MDEなら元のMDBを探します。ファイル名が似ているだけで最新版と決めず、更新日、起動画面、機能の差を確認してください。原本が見つかったら、配布中のファイルと分けてバックアップし、修正用のコピーを作ります。

複数人で使うAccessでは、フォームやVBAを持つFront Endと、業務データを持つBack Endが分かれていることがあります。画面用ファイルのバックアップだけではデータを保護できないため、リンク先も確認します。

3 VBAと参照設定を一覧にする

VBE(VBAを編集する画面)で、Declareを使う箇所と参照ライブラリを調べます。標準モジュールだけでなく、フォーム・レポートのコード、別のAccessファイルやアドインへの参照も対象です。原本や正当なアクセス権がなく編集できない場合は、管理者や開発元へ確認します。

4 外部部品と接続先を確認する

カレンダーや通信などに使うOCX・DLL、ODBCドライバ、Excel・CSV・メール連携を洗い出します。名称だけでなく、製品の版、提供元、インストール方法、64bit対応の有無、利用する機能を記録すると、代替の調査が進めやすくなります。

5 配布先と業務テストの範囲を決める

開発者のPCで動いても、Runtimeを使う一般利用者や別拠点で動くとは限りません。PCの種類、Office構成、接続権限、プリンター、日次・月次業務を整理し、どの環境で何をテストするかを決めます。

Access移行前にOffice構成、原本、VBA、外部部品と接続、配布先の業務を点検するチェックリスト

3 VBAを64bitへ対応させる方法

64bit対応では、APIを呼ぶDeclare文と、その引数・戻り値・受取変数を確認します。PtrSafeという語を追加しただけで完了とは判断できません。APIが要求する型を根拠に、変更すべき箇所を絞り込みます。

Declare文と参照先を探す

作業は開発用コピーで行います。AccessでAlt+F11を押してVBEを開き、現在のプロジェクト全体を対象に「Declare」を検索してください。フォームやレポートのクラスモジュールにも宣言や呼び出し処理がないか確認します。

APIは、Windowsなどが提供する機能をプログラムから呼び出すための窓口です。宣言にはDLL名、関数名、引数、戻り値の型が含まれます。古い宣言を見つけたら、APIの公式仕様と照合してから修正します。

PtrSafeとLongPtrを役割で使い分ける

PtrSafeは、Declare文が64bit環境での実行を想定していることを示すキーワードです。LongPtrは、メモリ上の位置を示すポインターや、ウィンドウなどを識別するハンドルを扱う型の別名です。VBA7では実行するOfficeのbit数に応じて適切な整数型として扱われます。[2・3]

語・型役割修正時の判断
PtrSafeDeclare文に付けるキーワード型が正しいことを自動保証するものではない
LongPtrポインター・ハンドル用API仕様が要求する箇所と受取変数へ使う
Long32bitの符号付き整数APIが32bit整数を要求する箇所では維持する
VBA7VBAの言語世代を判定32bit/64bit両方のVBA7環境で真になる
Win64Office側の64bit環境を判定Windowsのbit数の判定と混同しない
64bit対応のDeclare宣言と、ポインター用LongPtr、32bit整数用Longの役割を分けた図

たとえばGetActiveWindowは、アクティブなウィンドウのハンドルを返すため、戻り値をLongPtrにします。一方、Sleepの待機時間はDWORDという32bit整数の引数なので、ここをLongPtrへ変える必要はありません。

次はVBA7環境の標準モジュール先頭へ置く、宣言部分の例です。既存の同名宣言と重複させず、実際に使うAPIごとに仕様を確認してください。

Option Compare Database
Option Explicit

Private Declare PtrSafe Function GetActiveWindow _
    Lib “user32” () As LongPtr

Private Declare PtrSafe Sub Sleep _
    Lib “kernel32” (ByVal dwMilliseconds As Long)

Longを一括でLongPtrへ置換すると、APIへ渡すデータの大きさが合わなくなる可能性があります。宣言だけでなく、戻り値を受ける変数、ユーザー定義型、コールバックの引数まで確認しましょう。Sleepは型の比較例であり、画面を止める待機処理の導入を勧めるものではありません。

VBA7とWin64を混同しない

VBA7の条件分岐は、PtrSafeなどの言語機能が使える世代かを判断するために使います。対してWin64は、実行中のOfficeが64bitかを判断します。VBA7だから64bitだと判定するコードでは、32bit版Officeを誤って扱うことになります。

次の関数はAccess側のbit数を文字列で返します。VBA7を前提に、標準モジュールへ記述する例です。

Public Function AccessBitness() As String
#If Win64 Then
    AccessBitness = “64bit”
#Else
    AccessBitness = “32bit”
#End If
End Function

古いVBA6以前も対象にする場合は、#If VBA7 ThenでPtrSafeを使う宣言と旧宣言を分ける設計が必要です。また、API名や構造体が環境によって異なる場合は個別の分岐を検討します。条件分岐を付ければ未対応の外部部品が動く、という意味ではありません。

参照設定を整えてコンパイルする

VBEの[ツール]→[参照設定]で「参照不可」などの項目を確認します。必要なライブラリが存在しない場合は、提供元の正規の導入手順で復旧するか、代替する処理を決めます。不要と確認できない参照を、エラーを消す目的だけで外さないでください。

修正後は[デバッグ]→[データベース名のコンパイル]でエラーを解消します。ただし、コンパイルは書き方や参照の確認であり、業務全体の動作保証ではありません。ボタン、帳票、外部連携を動かすテストは別に必要です。


4 OCX・DLL・ODBC・ACCDEを64bit環境に合わせる

VBAの修正が済んでも、外部部品・接続・配布先の条件が合わなければシステムは動きません。移行対象のAccessだけでなく、利用者PCへ導入する部品やRuntimeも一緒に整えます。

OCXとDLLは対応版または代替機能を確認する

OCXは画面部品などを提供するActiveXコントロール、DLLはプログラムから利用する機能をまとめたライブラリです。64bitプロセスは32bit DLLを同じプロセス内へ読み込めません。Accessのフォームへ組み込む部品も、その対応状況を確認します。

対応する64bit版があれば、版・機能・配布条件を確かめて検証します。提供されていなければ、Accessの標準機能、別の部品、外部プログラムへの処理分離などを比較します。カレンダー表示のような機能でも、見た目だけでなく入力制限やイベント処理を確認しましょう。

OCXを再登録しても、32bit用の実装自体は64bit用に変わりません。また、遅延バインディングへ書き換えるだけでは、同じプロセスに読み込む部品のbit数制約は解消しません。別プロセスのCOM連携は条件が異なるため、一律に利用不可とせず、提供元の仕様と実機で判断します。

ODBCはAccess側のbit数に合わせる

ODBCは、AccessからSQL Serverなどのデータベースへ接続するための仕組みです。64bit版Accessから使う場合は、対応する64bit ODBCドライバを端末側に用意します。接続先サーバーのbit数だけを見て、クライアントのドライバを選ばないようにしてください。

接続設定を保存するDSNには、ユーザーDSNやシステムDSNなどがあります。Windows x64には32bit用と64bit用の管理ツールがあるため、次の対応を確認します。

管理する環境起動する管理ツール
64bit用%windir%\System32\odbcad32.exe
32bit用%windir%\SysWOW64\odbcad32.exe

ユーザーDSNは両方の管理ツールに表示されることがあります。名前が見えるだけで利用可能とは判断せず、選択されているドライバと接続テストの結果を確認してください。DSNを使わない接続でも、対応するドライバは必要です。

ドライバを変更したら、リンクテーブルの再リンクとデータ更新を確認します。接続先、認証方式、資格情報、ネットワーク、暗号化設定にも変更がないかを確認し、接続エラーをすべてbit数の問題として扱わないようにします。

ACCDEは元のACCDBから作り直す

ACCDEはVBAなどをコンパイルした配布向けファイルです。32bit版で作成したACCDEを、そのまま64bit版Accessで使うことはできません。元のACCDBを64bit環境に対応させ、配布先と互換性のあるAccessでACCDEを再作成するのが基本です。

具体的には、元ACCDBのコピーで参照・コード・部品を整え、コンパイル後に[ファイル]→[名前を付けて保存]からACCDEを作成します。作成したファイルそのもので業務をテストしてください。ACCDBで成功しただけでは、配布版の確認は終わっていません。

32bitと64bitの利用者が混在する場合は、それぞれの作成環境で配布ファイルを生成します。ファイル名や配布台帳に対象bit数と版番号を持たせると、誤配布を減らせます。Accessの製品版やBuildの違いも含め、実際の配布先で確認しましょう。

編集用ACCDBを保管し、32bit用と64bit用のACCDEをそれぞれの作成環境で生成して配布する流れ

元ACCDBがない場合は、旧PC、バックアップ、共有フォルダ、納品物を探し、開発元にも確認します。ACCDEの拡張子をACCDBへ変えても、編集可能な原本には戻りません。MDEの場合も元MDBを確保し、対象Accessで扱える形式か、形式変換が必要かを別に調べます。

Runtimeと他のOffice製品も確認する

Access Runtimeは、開発機能を持たない実行環境です。配布するACCDEなどに合うbit数を用意し、起動フォーム、メニュー、エラー処理を含めて一般利用者が操作できるか確認します。製品版Accessの画面から起動したテストだけで終わらせないでください。

Officeのbit数を切り替える場合は、既存版のアンインストールと希望する版の再導入が基本です。同じPCのExcelやOutlookなどにも影響するため、管理者と構成を整理します。Microsoft 365 Access Runtimeには既存のClick-to-Run製品やWindows Installer製品との導入条件もあります。

Accessの64bit移行で、どこを直せばよいか分からない場合は

原本が見つからない、部品の64bit対応が分からない場合は、先に対応範囲を調べることが重要です。
既存Accessの互換性調査や移行改修についてご相談頂けますのでお気軽にご連絡下さい。


5 検証から本番切替までの5段階と切り戻し

本番切替は、担当者・作業順・終了条件を決めて進めます。検証で問題がなかったとしても、利用者への配布や本番データへの接続で差が出るため、業務再開の判断まで計画に含めましょう。以下は移行を進める際の実務上の手順例です。

段階実施内容次へ進む条件
1 棚卸し原本、Office構成、部品、接続先、業務を確認修正対象と未確認事項、バックアップ対象が分かる
2 改修別PC・別VMでVBAや部品・接続を整えるコンパイル成功、必要部品の導入完了
3 業務検証旧環境と同条件で操作・出力・配布を比較必須業務を確認し、担当者が結果を判断できる
4 本番切替更新停止、バックアップ、配布、再接続を実施配布漏れがなく、本番の確認項目を満たす
5 監視問い合わせ、エラー、件数・出力結果を確認業務再開後の異常を把握し、対応方針を決められる
Accessの64bit移行を棚卸し、改修、業務検証、本番切替、監視の順に進める5段階

業務テストは旧環境と同じ条件で比べる

テスト用データは、本番に近い条件を再現したコピーを使います。個人情報や機密情報の取り扱いを社内ルールに合わせ、誤って本番更新や外部送信を行わない接続先に切り替えてください。メール送信やファイル出力にも試験用の宛先・保存先を用意します。

テスト対象確認する結果
起動と終了起動フォーム、権限、メニュー、終了処理が正常
登録・更新・削除入力制限とエラー処理が働き、保存した内容が一致
検索・集計同じ条件で件数・金額・集計結果が一致
帳票・PDF・印刷改ページ、フォント、用紙、実プリンターの出力を確認
Excel・CSV・外部DB入出力形式、文字化け、接続、更新結果を確認
複数人利用・月次処理同時更新、ロック、締め処理など重要業務を再現
配布版・Runtime一般利用者の権限と配布ファイルで一連の操作が完了

処理時間を比べる場合は、データ量、検索条件、ネットワーク、実行回数をそろえます。移行と同時に集計ロジックまで変更すると差の原因が分かりにくくなるため、必要な互換性修正と機能改善は変更履歴で区別します。

本番切替は更新停止と配布確認をセットにする

利用者へ停止時間と再開条件を案内し、Accessの終了を確認してからバックアップを取ります。保存先が共有ACCDBなのかSQL Serverなのかに応じて、整合した状態を復元できる方法を選びます。バックアップの場所だけでなく、復元手順も確認してください。

新しいFront Endや部品を配布したら、端末ごとの版番号、対象bit数、リンク先を照合します。旧版のショートカットから起動する利用者が残らないように確認し、代表者による本番確認が終わってから業務を再開します。

切り戻しでは最新データを先に守る

切り戻しは、不具合時に旧環境で業務を再開することです。旧ACCDEだけを残していても、Office、部品、接続設定を戻せなければ動かないことがあります。旧端末や再構築手順も含めて、戻す条件と担当者を決めておきます。

重要なのは、画面・実行環境を戻す作業と、業務データを戻す作業を分けることです。同じBack Endを旧版でも利用できるなら、最新データを保持したまま旧Front Endへ戻す方法を検討できます。ただし、項目や業務ロジックの互換性を事前に確認する必要があります。

切替後に入力が始まっているのに、古いバックアップを上書きすると更新分を失います。データの復元が必要な場合は、まず更新を止めて現時点のデータを保全し、追加・変更・削除の差分を回収して照合します。確認が終わるまで業務を再開しない判断も必要です。

Accessの旧実行環境へ戻す際に、切替後の更新データを保全してから業務を再開する考え方

たとえば、切替後に受注登録が進み、その後に帳票の不具合が見つかった場合、受注データまで切替前へ戻すべきとは限りません。印刷処理とデータの互換性を確認し、当日分を保持できる復旧方法を選びます。これは手順を考えるための想定例です。


6 移行後に動かないときの確認順と相談の目安

移行後の不具合は、どの操作まで成功したかで切り分けます。「Accessが動かない」だけでは原因を絞れないため、ファイルを開く段階、ボタンを押す段階、外部接続の段階を区別して記録してください。

症状最初に確認する箇所対応の方向性
ファイルが開かないAccessのbit数、ACCDEの作成条件、形式・権限配布先の条件を確認し、対応版を再生成
起動後やボタンでエラーVBAの宣言・型、参照設定、呼び出す部品エラー行と処理を確認し、対象箇所を修正
画面の一部が表示されないOCX・ActiveXの提供版と導入状況対応部品を導入するか標準機能等へ置換
外部データへ接続できないODBCドライバ、DSN、認証、通信管理ツールと接続条件を照合し再リンク
印刷・Excel出力だけ失敗プリンター、保存先、連携先Office、権限旧環境との差を調べ、該当処理を再検証

エラー番号と全文、発生した操作、対象ファイルの版、Accessの製品名・Build・bit数、発生PCを記録します。同じファイルが別PCで動くかも有効な手がかりです。信頼設定、パス、ネットワーク、ファイル破損など、bit数以外の原因も残して調べましょう。

内製で進める場合と専門会社へ相談する場合

原本と担当者がそろい、依存部品を把握し、別環境で主要業務を確認できるなら、内製で対応を進めやすくなります。対して、元ファイルがない、代替できない部品がある、APIが多い、配布先が多い場合は、最初に調査範囲を決めて相談する方法が有効です。

費用や期間は、コード行数だけでは決まりません。原本の有無、部品の提供状況、業務テストの範囲、配布方法、切り戻しの条件を整理すると、改修が必要な箇所と運用で対応できる箇所を分けられます。

まとめ

Accessの64bit移行では、Office構成、原本、VBA、外部部品・接続、配布先を一緒に確認します。コード修正後は配布版と実際の利用環境で業務を検証し、本番切替と切り戻しの両方を準備してください。最初の一歩は、現在のAccessのbit数と、編集可能な原本の保管場所を確認することです。


よくある質問(FAQ)

一致するとは限りません。Windowsが64bitでも32bit版Accessは利用できます。Windowsのシステム情報とは別に、Accessのバージョン情報で確認してください。

十分ではありません。APIがポインターやハンドルを扱う場合は、引数・戻り値・受取変数などの型も確認します。外部部品や接続設定の問題は、VBAの宣言修正だけでは解消しません。

一括置換はしません。APIが要求する型に合わせ、ポインター・ハンドルにはLongPtr、32bit整数にはLongを使います。宣言に付く型と、呼び出す側の変数を両方確認してください。

そのファイルをそのまま64bit版Access用にはできません。元ACCDBを探して対応環境向けに再作成します。見つからなければ、32bit環境での継続可否と、再構築が必要な機能を調査します。

64bit化だけで処理が速くなるとは限りません。Accessデータベースの原則2GBの上限も変わりません。メモリ不足、ファイル容量、クエリ、通信など、どこに問題があるかを分けて調べます。

Accessの64bit移行について相談する

既存Accessの保守・改修や移行に関するご相談を受け付けています。
Accessの製品名とbit数、原本の有無、現在のエラー、利用者数を整理してお知らせいただくと、必要な調査を具体化しやすくなります。


参考情報

[1]Microsoft Support:64bit版または32bit版のOfficeの選択

[2]Microsoft Learn:64-bit Visual Basic for Applications overview

[3]Microsoft Learn:PtrSafe keyword

[4]Microsoft Learn:ODBC Administrator tool displays both the 32-bit and the 64-bit user DSNs

[5]Microsoft Support:Access specifications

[6]Microsoft Support:Download and install Microsoft 365 Access Runtime

[7]Microsoft Learn:GetActiveWindow function

[8]Microsoft Learn:Sleep function

[9]Microsoft Learn:Process Interoperability

[10]Google Search Central:検索ドキュメント更新情報(FAQ検索表示終了)

[11]Microsoft Support:About Office: What version of Office am I using?

TOP