Excel 64 ビットに固有のマクロを書きたいと思います。以下のリンクは、マクロについて述べています 。
しかし、それは「#if Win64」と書かれています。ユーザーは Office 32 ビット 2010 を Windows 64 ビット OS にインストールできるためです。
しかし、それは「#if Win64」と言っています:それが正確にオフィスバージョンを参照するかどうか..?ユーザーはOffice32ビット2010をWindows64ビットOSにインストールできるためです。
#If ... then ...#Else内で使用されるWin64定数は、コンパイラ定数です。trueが返された場合は、開発環境が64ビット互換であることを示しています。つまり、32ビット環境用に記述されたコードには問題がある可能性があります。
一般に、32ビットVBAと64ビットVBAの間で発生する可能性がある唯一の競合は、Declareを介してDLLの外部を呼び出そうとした場合です。あなたが提供したリンクで説明されているように、主な潜在的な問題はこれです:
64ビットOfficeでレガシーVBAコードを実行する際の問題は、64ビットを32ビットデータ型にロードしようとすると、64ビットの量が切り捨てられることです。これにより、メモリのオーバーラン、コードでの予期しない結果、およびアプリケーションの障害が発生する可能性があります。
おそらくレガシーコードは引き続き機能しますが、確実に機能するように調整します。
これを処理する方法は、コンパイラ定数を使用して#If ... then ...#Else構造内で64ビットの正しい呼び出し方法を提供するリンクで説明されています。