チュートリアル : VSTO アドイン内のコードを VBA から呼び出す
このチュートリアルでは、VSTO アドインのオブジェクトを Visual Basic for Applications (VBA) アドインや COM VSTO アドインなど、他の Microsoft Office ソリューションに公開する方法について説明します。
適用対象: このトピックの情報は、VSTO アドイン プロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。
このチュートリアルでは具体的に Excel を使用しますが、ここで説明する概念は Visual Studio で提供されるすべての VSTO アドイン プロジェクト テンプレートに当てはまります。
このチュートリアルでは、次の作業について説明します。
他の Office ソリューションに公開できるクラスを定義する。
他の Office ソリューションにクラスを公開する。
クラスのメソッドを VBA コードから呼び出す。
Note
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
Microsoft Office Developer Tools が含まれている Visual Studio のエディション。 詳細については、「Office ソリューションを開発できるようにコンピューターを構成する」を参照してください。
Microsoft Excel
VSTO アドイン プロジェクトを作成する
まず、Excel 用の VSTO アドイン プロジェクトを作成します。
新しいプロジェクトを作成するには
Excel VSTO アドイン プロジェクト テンプレートを使用して、 ExcelImportDataという名前の Excel VSTO アドイン プロジェクトを作成します。 詳細については、「 How to: Create Office Projects in Visual Studio」を参照してください。
Visual Studio によって、ThisAddIn.cs または ThisAddIn.vb コード ファイルが開かれ、ソリューション エクスプローラー に ExcelImportData プロジェクトが追加されます。
他の Office ソリューションに公開できるクラスを定義する
このチュートリアルの目的は、VSTO アドインの ImportData
というクラスの AddInUtilities
メソッドを VBA コードから呼び出すことです。 このメソッドは、アクティブなワークシートのセル A1 に文字列を書き込みます。
AddInUtilities
クラスを他の Office ソリューションに公開するには、このクラスをパブリックにし、COM から参照できるようにする必要があります。 このクラスの IDispatch インターフェイスも公開する必要があります。 次の手順で示すコードでは、これらの要件を満たす方法の 1 つを示します。 詳細については、「 Calling Code in VSTO Add-ins from Other Office Solutions」を参照してください。
他の Office ソリューションに公開できるクラスを定義するには
[プロジェクト] メニューの [クラスの追加]をクリックします。
[新しい項目の追加] ダイアログ ボックスで、新しいクラスの名前を AddInUtilitiesに変更し、 [追加]をクリックします。
コード エディターで AddInUtilities.cs ファイルまたは AddInUtilities.vb ファイルが開きます。
次の ディレクティブをファイルの先頭に追加します。
AddInUtilities
クラスを次のコードで置き換えます。[ComVisible(true)] public interface IAddInUtilities { void ImportData(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class AddInUtilities : IAddInUtilities { // This method tries to write a string to cell A1 in the active worksheet. public void ImportData() { Excel.Worksheet activeWorksheet = Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet; if (activeWorksheet != null) { Excel.Range range1 = activeWorksheet.get_Range("A1", System.Type.Missing); range1.Value2 = "This is my data"; } } }
このコードは、
AddInUtilities
クラスを COM から参照できるようにし、このクラスにImportData
メソッドを追加します。 また、 クラスは IDispatchAddInUtilities
インターフェイスを公開するために ClassInterfaceAttribute 属性を持ち、COM から参照できるインターフェイスを実装します。
他の Office ソリューションにクラスを公開する
AddInUtilities
クラスを他の Office ソリューションに公開するには、 RequestComAddInAutomationService クラスの ThisAddIn
メソッドをオーバーライドします。 オーバーライドでは、 AddInUtilities
クラスのインスタンスを返します。
他の Office ソリューションに AddInUtilities クラスを公開するには
ソリューション エクスプローラーで、 [Excel]を展開します。
ThisAddIn.cs または ThisAddIn.vbを右クリックしてから、 [コードの表示]をクリックします。
ThisAddIn
クラスに次のコードを追加します。[ビルド] メニューの [ソリューションのビルド] をクリックします。
ソリューションがエラーなしでビルドされることを確認します。
VSTO アドインをテストする
AddInUtilities
クラスをさまざまな種類の Office ソリューションから呼び出すことができます。 このチュートリアルでは、Excel ブック内の VBA コードを使用します。 使用できる他の種類の Office ソリューションについて詳しくは、「他の Office ソリューションから VSTO アドインのコードを呼び出す」をご覧ください。
VSTO アドインをテストするには
F5 キーを押してプロジェクトを実行します。
Excel で、アクティブ ブックを Excel マクロ有効ブック (*.xlsm) として保存します。 このブックは、デスクトップなどの便利な場所に保存します。
リボンの [開発] タブをクリックします。
Note
[開発] タブが表示されていない場合は、最初にこれを表示する必要があります。 詳しくは、「方法: [開発者] タブをリボンに表示する」をご覧ください。
[コード] グループの [Visual Basic]をクリックします。
Visual Basic エディターが開きます。
[プロジェクト] ウィンドウで、 [ThisWorkbook]をダブルクリックします。
ThisWorkbook
オブジェクトのコード ファイルが開きます。コード ファイルに次の VBA コードを追加します。 このコードでは、まず ExcelImportData VSTO アドインを表す COMAddIn オブジェクトを取得します。 次に、COMAddIn オブジェクトの Object プロパティを使って、
ImportData
メソッドを呼び出します。Sub CallVSTOMethod() Dim addIn As COMAddIn Dim automationObject As Object Set addIn = Application.COMAddIns("ExcelImportData") Set automationObject = addIn.Object automationObject.ImportData End Sub
F5 キーを押します。
新しい Imported Data シートがブックに追加されていることを確認します。 セル A1 に文字列 This is my dataがあることも確認してください。
Excelを終了します。
次のステップ
VSTO アドインのプログラミングの詳細については、次の各トピックを参照してください。
ThisAddIn
クラスを使用して、ホスト アプリケーションを自動化し、VSTO アドイン プロジェクトの他のタスクを実行する。 詳細については、「VSTO アドインのプログラミング」を参照してください。VSTO アドインにカスタム作業ウィンドウを作成する。 詳しくは、「カスタム作業ウィンドウ」と「方法: カスタム作業ウィンドウをアプリケーションに追加する」をご覧ください。
VSTO アドインでリボンをカスタマイズする。 詳しくは、「リボンの概要」と「方法: リボンのカスタマイズの概要」をご覧ください。