VBA とドキュメント レベルのカスタマイズの結合
Microsoft Office Word または Microsoft Office Excel 用のドキュメント レベルのカスタマイズに属するドキュメントで、Visual Basic for Applications (VBA) コードを使用できます。 ドキュメント内の VBA コードをカスタマイズ アセンブリから呼び出すことができます。または、ドキュメント内の VBA コードによってカスタマイズ アセンブリ内のコードを呼び出すことができるようにプロジェクトを構成できます。 後者のタスクの詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。
対象: このトピックの情報は、Excel 2007 と Excel 2010、および Word 2007 と Word 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
ドキュメント レベルのカスタマイズの VBA コードの動作
Visual Studio でプロジェクトを開くと、ドキュメントはデザイン モードで表示されます。 ドキュメントをデザイン モードで表示すると VBA コードが実行されないので、VBA コードを実行せずにドキュメントやコードで作業を行うことができます。
ソリューションを実行すると、VBA とカスタマイズ アセンブリのイベント ハンドラーがドキュメント内で発生したイベントを受け取り、両方のコードが実行されます。 2 つのコードの実行順序を事前に決めることはできません。事例ごとにテストによって判断する必要があります。 予想外の結果が発生しないように、2 つのコードのセットを慎重に組み合わせ、テストしてください。
カスタマイズ アセンブリからの VBA コードの呼び出し
Word 文書ではマクロを呼び出すことができ、Excel ブックではマクロと関数を呼び出すことができます。 これらを呼び出すには、次のいずれかのメソッドを使用します。
Word では、Microsoft.Office.Interop.Word.Application クラスの Run メソッドを呼び出します。
Excel では、Microsoft.Office.Interop.Excel.Application クラスの Run メソッドを呼び出します。
いずれのメソッドでも、1 つ目のパラメーターでは呼び出すマクロまたは関数の名前を指定し、残りの省略可能なパラメーターではマクロまたは関数に渡すパラメーターを指定します。 1 つ目のパラメーターは、次のように Word と Excel で形式が異なります。
Word の場合、1 つ目のパラメーターは、テンプレート名、モジュール名、マクロ名を任意に組み合わせた文字列です。 ドキュメント名を指定した場合、コードは、どのようなドキュメント内のマクロでも実行できるわけではなく、現在のコンテキストに関連するドキュメント内のマクロのみ実行できます。
Excel の場合、1 つ目のパラメーターは、マクロ名、関数が存在する場所を示す Range、または登録済み DLL (XLL) 関数のレジスタ ID を指定する文字列です。 文字列を渡すと、その文字列はアクティブ シートのコンテキスト内で評価されます。
次のコード例は、MyMacro という名前のマクロを Excel のドキュメント レベルのプロジェクトから呼び出す方法を示しています。 この例は、MyMacro が Sheet1 に定義されていることを前提としています。
Globals.Sheet1.Application.Run("MyMacro")
Globals.Sheet1.Application.Run("MyMacro", missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing);
注意
Visual C# で省略可能なパラメーターの代わりにグローバル missing 変数を使用する方法の詳細については、「Office ソリューションでの Visual Basic を使用したプログラミングと Visual C# を使用したプログラミング」を参照してください。
参照
処理手順
方法 : Visual Basic プロジェクトのコードを VBA に公開する
方法 : Visual C# プロジェクトのコードを VBA に公開する
チュートリアル : VBA から Visual Basic プロジェクトのコードを呼び出す
チュートリアル : VBA から Visual C# プロジェクトのコードを呼び出す
概念
VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す