このチュートリアルでは、ドキュメント内の Visual Basic for Applications (VBA) コードから Microsoft Office Word のドキュメント レベルのカスタマイズでメソッドを呼び出す方法について説明します。 この手順には、 ThisDocument ホスト項目クラスにメソッドを追加し、そのメソッドを VBA コードに公開してから、ドキュメント内の VBA コードからメソッドを呼び出すという 3 つの基本的な手順が含まれます。
適用対象: このトピックの情報は、Excel および Word のドキュメント レベルのプロジェクトに適用されます。 詳細については、「 Office アプリケーションとプロジェクトの種類で使用できる機能」を参照してください。
このチュートリアルでは Word を具体的に使用しますが、このチュートリアルで示す概念は、Excel のドキュメント レベルのプロジェクトにも適用されます。
このチュートリアルでは、次の作業について説明します。
VBA コードを含むドキュメントを作成する。
Word のセキュリティ センターを使用してドキュメントの場所を信頼する。
ThisDocumentホスト項目クラスにメソッドを追加する。VBA コードへのメソッドの公開。
VBA コードからメソッドを呼び出します。
注
次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio IDE のカスタマイズ」を参照してください。
[前提条件]
このチュートリアルを実行するには、次のコンポーネントが必要です。
Microsoft Office 開発者ツールを含む Visual Studio のエディション。 詳細については、「 Office ソリューションを開発するためのコンピューターの構成」を参照してください。
マイクロソフトワード
VBA コードを含むドキュメントを作成する
最初の手順では、単純な VBA マクロを含むマクロが有効なドキュメントを作成します。 ドキュメントに基づく Visual Studio プロジェクトを作成する前に、ドキュメントに VBA プロジェクトが含まれている必要があります。 それ以外の場合、Visual Studio は VBA プロジェクトを変更して、VBA コードがカスタマイズ アセンブリを呼び出せるようにすることはできません。
使用する VBA コードを含むドキュメントが既にある場合は、この手順をスキップできます。
VBA コードを含むドキュメントを作成するには
Word を起動します。
作業中の文書を、DocumentWithVBA という名前の Word Macro-Enabled 文書 (*.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 アドイン ノードを選択します。
プロジェクト テンプレートの一覧で、 Word 2010 ドキュメント または Word 2013 ドキュメント プロジェクトを 選択します。
[ 名前 ] ボックスに「 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 プロパティを True に設定します。
VBA コードにメソッドを公開するには
ソリューション エクスプローラーで、ThisDocument.vbをダブルクリックします。
DocumentWithVBA ファイルがデザイナーで開きます。
[ プロパティ ] ウィンドウで 、EnableVbaCallers プロパティを選択し、値を True に変更 します。
表示されるメッセージで [ OK] をクリックします 。
プロジェクトをビルドします。
VBA コードからメソッドを呼び出す
ドキュメント内の VBA コードから CreateTable メソッドを呼び出すようになりました。
注
このチュートリアルでは、プロジェクトのデバッグ中に VBA コードをドキュメントに追加します。 Visual Studio はビルド出力フォルダー内のドキュメントをメイン プロジェクト フォルダーのドキュメントのコピーに置き換えるため、このドキュメントに追加した VBA コードは、次回プロジェクトをビルドするときに上書きされます。 VBA コードを保存する場合は、プロジェクト フォルダー内のドキュメントにコピーできます。 詳細については、「 VBA とドキュメント レベルのカスタマイズの組み合わせ」を参照してください。
VBA コードからメソッドを呼び出すには
F5 キーを押してプロジェクトを実行します。
[ 開発 ] タブの [ コード ] グループで、[ Visual Basic] をクリックします。
Visual Basic エディターが開きます。
[ 挿入 ] メニューの [ モジュール] をクリックします。
次のコードを新しいモジュールに追加します。
このコードは、カスタマイズ アセンブリ内の
CreateTableメソッドを呼び出します。 マクロは、CallVSTOAssemblyオブジェクトのThisDocumentプロパティを使用して、このメソッドにアクセスします。 このプロパティは、このチュートリアルで前に EnableVbaCallers プロパティを設定したときに自動的に生成されました。Sub CreateTable() Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date") End SubF5 押します。
新しいテーブルがドキュメントに追加されたことを確認します。
変更を保存せずに Word を終了します。
次のステップ
VBA から Office ソリューションでコードを呼び出す方法の詳細については、次のトピックを参照してください。
VBA から Visual C# カスタマイズでコードを呼び出します。 このプロセスは、Visual Basic プロセスとは異なります。 詳細については、「 チュートリアル: Visual C# プロジェクトで VBA からコードを呼び出す」を参照してください。
VBA から VSTO アドインのコードを呼び出します。 詳細については、「 チュートリアル: VBA から VSTO アドインのコードを呼び出す」を参照してください。