次の方法で共有


VBA とドキュメント レベルのカスタマイズの結合

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

Microsoft Office のバージョン

  • 2007 Microsoft Office system

  • Microsoft Office 2003

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Visual Studio Tools for Office の Microsoft Office Word または Microsoft Office Excel 用のドキュメント レベルのカスタマイズに属するドキュメントで、Visual Basic for Applications (VBA) コードを使用できます。ドキュメント レベルのプロジェクトでは、ドキュメント内の VBA コードをカスタマイズ アセンブリから呼び出すことができます。2007 Microsoft Office system のドキュメント レベルのプロジェクトでは、ドキュメント内の VBA コードによってカスタマイズ アセンブリ内のコードを呼び出すことができるようにプロジェクトを構成することも可能です。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

ドキュメント レベルのカスタマイズの VBA コードの動作

Visual Studio でプロジェクトを開くと、ドキュメントはデザイン モードで表示されます。ドキュメントをデザイン モードで表示すると VBA コードが実行されないので、VBA コードを実行せずにドキュメントやコードで作業を行うことができます。

ソリューションを実行すると、VBA と Visual Studio Tools for Office アセンブリのイベント ハンドラがドキュメント内で発生したイベントを受け取り、両方のコードが実行されます。2 つのコードの実行順序を事前に決めることはできません。事例ごとにテストによって判断する必要があります。予想外の結果が発生しないように、2 つのコードのセットを慎重に組み合わせ、テストしてください。

カスタマイズ アセンブリからの VBA コードの呼び出し

Word 文書ではマクロを呼び出すことができ、Excel ブックではマクロと関数を呼び出すことができます。これらを呼び出すには、次のいずれかのメソッドを使用します。

いずれのメソッドでも、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);
3hekt07s.alert_note(ja-jp,VS.90).gifメモ :

Visual C# で省略可能なパラメータの代わりにグローバル missing 変数を使用する方法の詳細については、「Visual Basic を使用したプログラミングと C# を使用したプログラミング」を参照してください。

参照

処理手順

方法 : Visual Basic プロジェクトのコードを VBA に公開する

方法 : Visual C# プロジェクトのコードを VBA に公開する

チュートリアル : VBA から Visual Basic プロジェクトのコードを呼び出す

チュートリアル : VBA から Visual C# プロジェクトのコードを呼び出す

概念

VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す

Visual Studio における Office ソリューションの作成

VBA ソリューションと Visual Studio Tools for Office ソリューションの比較

Office ソリューションのアセンブリの概要