VBA と VSTO の相互運用について(VSTOソリューションから VBA の呼び出し)

前回(VBA と VSTO の相互運用について(VBA からの VSTO ソリューションの呼び出し))は VBA・VSTO を呼び出すことをお話いたしました。

今回は前回の続きになりますが、VSTO 側から VBA・マクロを呼び出す方法になります。

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

Word では、Microsoft.Office.Interop.Word の Application クラスの Run メソッドを呼び出します。

Excel では、Microsoft.Office.Interop.Excel の Application クラスの Run メソッドを呼び出します。

前回の公開したソリューションを元に作業を進めてみたいと思います。

手順:

1. まずは、VBAtoVSTO ソリューションを起動します。

2. Sheet1. のプロパティで "ReferenceAssemblyFromVbaProject" を True にします。

image

3. 作業ウィンドウにボタンを追加しクリックします。

4. 以下のコードを記述します。

Globals.Sheet1.Application.Run("Sheet1.CommandButton1_Click()")

※Sheet1 の CommandButton1_Click() Sub プロシージャーを呼び出しています。

image

5.デバッグして作業ウィンドウ上のボタンをクリックすると VBA 上のメッセージボックスが呼ばれます。

image

image

今回ご紹介した VBA・マクロの呼び出しについては、Word 2003、Excel 2003 のソリューションでも可能です。