Office 2010では従来からの32ビット版に加え、64ビット版が追加されました。
32ビット版に比べて使用できるメモリ容量が大きく、2GBを超えるサイズのファイルを扱うことができ、なおかつ大量のファイルを処理できるようになりましたが、その反面従来の32ビット版のOffice用に作成されたActiveXコントロールやCOMアドインは64ビット環境を想定して作られてはいませんので、多くが64ビット版のOfficeでは動作しません。
実際私の環境(Windows 7 Ultimate(64ビット版) + Office Professional Plus 2010(64ビット版))では、リボンのタブに「Acrobat」が表示されず、Adobe Acrobat 9 StandardのOffice用アドインは動作しませんでした(Adobe PDFプリンタからのPDF作成は可能です)。
また、64ビット版対応に伴いVBAも新しいバージョンであるVBA 7(Microsoft Visual Basic for Applications 7.0)になりました。
従来のVBAではポインターデータ型が無かったため、ポインターやハンドルの値を保持するためにLong型を使用していました。しかし64ビット環境ではポインターやハンドルのサイズが32ビット版に比べて大きくなり、Long型を使用すると予期しないエラーが発生する可能性があるため、Office 2010ではその問題に対応した新しいデータ型、LongPtr型(ポインターデータ型)とLongLong型(64ビット数値型)が追加されました。
(変換するための演算子、CLngPtrやCLngLngも追加されています。)
64ビット版のOfficeでDeclareステートメントでWindows APIを呼び出す場合、これまで使っていたLong型を適切な形で置き換える必要があります。また、64ビット版ではPtrSafe属性がないとコンパイル時にエラーが発生するため、DeclareステートメントにPtrSafe属性を追加しなければなりません。
上記のような変更に合わせて、Office 2010ではVBA7とWin64という2つの条件付きコンパイル定数が追加されました。
VBA7はVBAのバージョンを区別するもので、Win64は32ビット/64ビットを区別するためのものです。
例えば32ビット版/64ビット版でDeclareステートメントによる宣言を分ける場合は、下記のようになります。
#If VBA7 And Win64 Then
'64ビット版
Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hWnd As LongPtr, lpRect As RECT) As Long
#Else
'32ビット版
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long
#End If
#If VBA7 And Win64 Then
'64ビット版
Private Declare PtrSafe Function GetTickCount Lib "kernel32" Alias "GetTickCount64" () As LongLong
#Else
'32ビット版
Private Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
#End If
下記のように適当な定数を1つ用意することで、32ビット版/64ビット版を判別しても良いかもしれません。
#If VBA7 And Win64 Then
'64ビット版
Const x64 As Boolean = True
#Else
'32ビット版
Const x64 As Boolean = False
#End If
Public Sub Sample()
If x64 Then
MsgBox "実行環境が64ビット版です。処理を中止します。", vbCritical + vbInformation
Exit Sub
End If
MsgBox "このメッセージが表示された場合は実行環境が32ビット版です。"
End Sub
以上のように、Office 2010で新しく登場した64ビット版では注意すべき事項が何点かあります。
いずれは64ビット環境がメインになっていくとは思いますが、現段階(2010年6月時点)ではアドイン周り含めて環境が整っていないため、64ビット版の導入はあまり推奨されていません。
64ビット版のOffice 2010を導入する際には事前によく検討する必要があるでしょう。
参考Webページ:
「64 ビット版の Office 2010」
http://technet.microsoft.com/ja-jp/library/ee681792.aspx
「Office 2010 の 32 ビット バージョンと 64 ビット バージョンとの互換性」
http://msdn.microsoft.com/ja-jp/library/ee691831.aspx
「Working with VBA in Office 2010 (32-bit) and Office 2010 (64-bit)」
http://msdn.microsoft.com/en-us/library/ff700513%28office.11%29.aspx
「Excel: Declaring API functions in 64 bit Office」
http://www.jkp-ads.com/Articles/apideclarations.asp