チュートリアル : VBA から Visual Basic プロジェクトのコードを呼び出す
このチュートリアルでは、Microsoft Office Word 用のドキュメント レベルのカスタマイズに含まれるメソッドを文書内の Visual Basic for Applications (VBA) コードから呼び出す方法について説明します。この操作を実行するには、ThisDocument ホスト項目クラスにメソッドを追加し、そのメソッドを VBA コードに公開し、そのメソッドを文書内の VBA コードから呼び出すという主要な 3 つの手順を使用します。
対象: このトピックの情報は、Excel 2013 と Excel 2010、および Word 2013 と Word 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
このチュートリアルでは Word を使用しますが、ここで説明する概念は Excel 用のドキュメント レベルのプロジェクトにも当てはまります。
このチュートリアルでは、次の作業について説明します。
VBA コードを含む文書の作成
Word のセキュリティ センターを使用した、文書の場所に対する信頼の付与
ThisDocument ホスト項目クラスへのメソッドの追加
VBA コードへのメソッドの公開
VBA コードからのメソッドの呼び出し
[!メモ]
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。
関連のビデオ デモについては、「How Do I: Call VSTO Code from VBA? (操作方法: VBA から VSTO コードを呼び出す)」を参照してください。
必須コンポーネント
このチュートリアルを実行するには、次のコンポーネントが必要です。
-
Microsoft Office Developer Tools が含まれているエディションの Visual Studio 2012。詳細については、「[Office ソリューションを開発できるようにコンピューターを構成する](bb398242\(v=vs.110\).md)」を参照してください。
- Word 2013 または Word 2010。
VBA コードを含む文書の作成
まず、簡単な VBA マクロを含むマクロ有効文書を作成します。この文書に基づく Visual Studio プロジェクトを作成するためには、事前に VBA プロジェクトを文書に追加しておく必要があります。そうでない場合、Visual Studio は VBA コードがカスタマイズ アセンブリを呼び出すことができるように VBA プロジェクトを変更できません。
使用する VBA コードが含まれる既存の文書がある場合は、この手順を省略できます。
VBA コードを含む文書を作成するには
Word を起動します。
アクティブ文書を DocumentWithVBA という名前の Word マクロ有効文書 (*.docm) として保存します。このブックは、デスクトップなどの便利な場所に置きます。
リボンの [開発] タブをクリックします。
[!メモ]
[開発] タブが表示されていない場合は、最初にこれを表示する必要があります。詳細については、「方法 : [開発] タブをリボンに表示する」を参照してください。
[コード] グループの [Visual Basic] をクリックします。
Visual Basic エディターが開きます。
[プロジェクト] ウィンドウの [ThisDocument] をダブルクリックします。
ThisDocument オブジェクトのコード ファイルが開きます。
コード ファイルに次の VBA コードを追加します。このコードには、何も操作を実行しない簡単な関数が定義されています。この関数は、文書内に VBA プロジェクトが存在することを確認することだけを目的としています。これは、このチュートリアルの後の手順で必要となります。
Sub EmptySub() End Sub
文書を保存し、Word を終了します。
プロジェクトの作成
次に、前の手順で作成したマクロ有効文書を使用する、Word 用のドキュメント レベルのプロジェクトを作成します。
新しいプロジェクトを作成するには
Visual Studio を起動します。
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。IDE が Visual Basic の開発設定を使用するように設定されている場合は、[ファイル] メニューの [新しいプロジェクト] をクリックします。
テンプレート ペインで、**[Visual Basic]を展開し、[Office/SharePoint]**を展開します。
[Office Add-ins] のノードを選択します。
プロジェクト テンプレートの一覧で、[Word 2010 ドキュメント] または [Word 2013 Document] のプロジェクトを選択します。
[名前] ボックスに「CallingCodeFromVBA」と入力します。
[OK] をクリックします。
Visual Studio Tools for Office プロジェクト ウィザードが開きます。
[既存のドキュメントをコピーする] を選択し、[既存のドキュメントの完全パス] ボックスで、前の手順で作成した文書 DocumentWithVBA の場所を指定します。独自に作成したマクロ有効文書を使用する場合は、その文書の場所を指定します。
[完了] をクリックします。
Visual Studio によって、デザイナーで DocumentWithVBA 文書が開き、ソリューション エクスプローラーに CallingCodeFromVBA プロジェクトが追加されます。
文書の場所に対する信頼の付与
ソリューションのコードを文書内の VBA コードに公開するためには、文書内の VBA に実行についての信頼を付与する必要があります。これにはいくつかの方法があります。このチュートリアルでは、Word のセキュリティ センターで文書の場所に信頼を付与します。
文書の場所に信頼を付与するには
Word を起動します。
[ファイル] タブをクリックします。
[Word のオプション] をクリックします。
カテゴリ ペインで、[セキュリティ センター] をクリックします。
詳細ペインで [セキュリティ センターの設定] をクリックします。
カテゴリ ペインで [信頼できる場所] をクリックします。
詳細ペインの [新しい場所の追加] をクリックします。
[Microsoft Office の信頼できる場所] ダイアログ ボックスで、CallingCodeFromVBA プロジェクトがあるフォルダーに移動します。
[この場所のサブフォルダーも信頼する] を選択します。
[Microsoft Office の信頼できる場所] ダイアログ ボックスで [OK] をクリックします。
[セキュリティ センター] ダイアログ ボックスで [OK] をクリックします。
[Word のオプション] ダイアログ ボックスで [OK] をクリックします。
Word を終了します。
ThisDocument クラスへのメソッドの追加
VBA プロジェクトのセットアップが完了したので、次に VBA コードから呼び出す ThisDocument ホスト項目クラスにメソッドを追加します。
ThisDocument クラスにメソッドを追加するには
ソリューション エクスプローラーで [ThisDocument.vb] を右クリックし、[コードの表示] をクリックします。
コード エディターで ThisDocument.vb ファイルが開きます。
ThisDocument クラスに次のメソッドを追加します。このメソッドは、文書の先頭に 2 行 2 列の表を作成します。パラメーターでは、最初の行に表示するテキストを指定します。後の手順で、このメソッドを文書内の VBA コードから呼び出します。
Public Sub CreateTable(ByVal firstColumnHeader As String, _ ByVal secondColumnHeader As String) Me.Paragraphs(1).Range.InsertParagraphBefore() Dim table1 As Word.Table = Me.Tables.Add(Me.Paragraphs(1).Range, 2, 2) With table1 .Style = "Table Professional" .Cell(1, 1).Range.Text = firstColumnHeader .Cell(1, 2).Range.Text = secondColumnHeader End With End Sub
プロジェクトをビルドします。
VBA コードへのメソッドの公開
CreateTable メソッドを文書内の VBA コードに公開するには、ThisDocument ホスト項目の EnableVbaCallers プロパティを True に設定します。
VBA コードにメソッドを公開するには
ソリューション エクスプローラーで、ThisDocument.vb をダブルクリックします。
デザイナーで DocumentWithVBA ファイルが開きます。
[プロパティ] ウィンドウで [EnableVbaCallers] プロパティを選択し、値を True に変更します。
表示されたメッセージで [OK] をクリックします。
プロジェクトをビルドします。
VBA コードからのメソッドの呼び出し
ここで、文書内の VBA コードから CreateTable メソッドを呼び出すことができます。
[!メモ]
このチュートリアルでは、プロジェクトのデバッグ中に VBA コードを文書に追加します。このドキュメントに追加する VBA コードは、次にプロジェクトをビルドするときに上書きされます。これは、Visual Studio によって、ビルド出力フォルダー内のドキュメントが、メイン プロジェクト フォルダーのドキュメントのコピーで置換されるためです。VBA コードを保存する場合は、コードをプロジェクト フォルダー内のドキュメントにコピーします。詳細については、「VBA とドキュメント レベルのカスタマイズの結合」を参照してください。
VBA コードからメソッドを呼び出すには
F5 キーを押してプロジェクトを実行します。
[開発] タブの [コード] グループで [Visual Basic] をクリックします。
Visual Basic エディターが開きます。
[挿入] メニューの [モジュール] をクリックします。
新しいモジュールに次のコードを追加します。
このコードはカスタマイズ アセンブリの CreateTable メソッドを呼び出します。マクロは、ThisDocument オブジェクトの CallVSTOAssembly プロパティを使用して、このメソッドにアクセスします。このプロパティは、前の手順で EnableVbaCallers プロパティを設定したときに自動的に生成されています。
Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End Sub
F5 キーを押します。
文書に新しい表が追加されたことを確認します。
変更を保存せずに Word を終了します。
次の手順
Office ソリューションのコードを VBA から呼び出す方法の詳細については、次の各トピックを参照してください。
VBA から Visual C# カスタマイズのコードを呼び出す。このプロセスは Visual Basic プロセスとは異なります。詳細については、「チュートリアル : VBA から Visual C# プロジェクトのコードを呼び出す」を参照してください。
VBA からアプリケーション レベルのアドインのコードを呼び出す。詳細については、「チュートリアル : アプリケーション レベルのアドインのコードを VBA から呼び出す」を参照してください。
参照
処理手順
方法 : Visual Basic プロジェクトのコードを VBA に公開する
方法 : Visual C# プロジェクトのコードを VBA に公開する
チュートリアル : VBA から Visual C# プロジェクトのコードを呼び出す