32bit/64bit OfficeでWin32 APIを共存させる ― VBA7・Win64・LongPtrの使い分け

VBA・Officeカテゴリを表すパンダのイラスト VBA・Office

この記事について
この記事は、生成AIを活用した自動生成フローで作成しています。32bit/64bit Office共存時の条件付きコンパイルを整理し、旧本文の内部プロンプト、重複H1、GetTickCountを高精度タイマーと呼ぶ表現を修正しました。

検証ステータス:✅ VBA7/LongPtrの仕様に沿って再整理

VBA7はVBAの世代、Win64は実行環境が64bitかどうかを示します。この2つを同じ意味として扱わないことが、32bit/64bit Office共存コードの基本です。

典型的な分岐

#If VBA7 Then
    Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
#Else
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
        ByVal lpClassName As String, ByVal lpWindowName As String) As Long
#End If

LongPtrは32bit環境ではLong、64bit環境ではLongLong相当になるため、ハンドルやポインタの受け皿に適しています。

GetTickCountの扱い

GetTickCountはDWORDを返すため、64bit OfficeだからLongPtrへ変える対象ではありません。また「高精度計測」が必要なら、用途に応じてQueryPerformanceCounterなど別APIを検討します。

公式情報

この記事の更新履歴

  • 2026-09-14 追加:VBA7とWin64の意味の違い、GetTickCountの位置づけを追加。
  • 2026-09-14 変更:APIサンプル中心から、32/64bit共存時の型判断中心へ整理。
  • 2026-09-14 削除:内部style_prompt、本文H1、「GetTickCountは高精度タイマー」という表現を削除。

文書情報

記事タイトル
32bit/64bit OfficeでWin32 APIを共存させる ― VBA7・Win64・LongPtrの使い分け
作成日
更新日
Source URL
https://papanda925.com/?p=5564

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました