Share via


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

更新 : 2007 年 11 月

対象

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

プロジェクトの種類

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

Microsoft Office のバージョン

  • 2007 Microsoft Office system

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

このチュートリアルでは、Microsoft Office Word 2007 用のドキュメント レベルのカスタマイズに含まれるメソッドを文書内の Visual Basic for Applications (VBA) コードから呼び出す方法について説明します。この操作を実行するには、ThisDocument ホスト項目クラスにメソッドを追加し、そのメソッドを VBA コードに公開し、そのメソッドを文書内の VBA コードから呼び出すという主要な 3 つの手順を使用します。

このチュートリアルでは Word を使用しますが、ここで説明する概念は Microsoft Office Excel 2007 用のドキュメント レベルのプロジェクトにも当てはまります。

このチュートリアルでは、次のタスクについて説明します。

  • VBA コードを含む文書の作成

  • Word のセキュリティ センターを使用した、文書の場所に対する信頼の付与

  • ThisDocument ホスト項目クラスへのメソッドの追加

  • VBA コードへのメソッドの公開

  • VBA コードからのメソッドの呼び出し

Bb608609.alert_note(ja-jp,VS.90).gifメモ :

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピュータでは名前や場所が異なる場合があります。これらの要素は、使用する Visual Studio のエディションとその設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

前提条件

このチュートリアルを完了するには、次のコンポーネントが必要です。

  • Visual Studio Tools for Office (Visual Studio 2008 Professional および Visual Studio Team System のオプションの要素)

  • Microsoft Office Word 2007

ここに挙げた Visual Studio のバージョンでは、Visual Studio Tools for Office が既定でインストールされます。インストールされているかどうかを確認する方法については、「Visual Studio Tools for Office のインストール」を参照してください。

VBA コードを含む文書の作成

まず、簡単な VBA マクロを含むマクロ有効文書を作成します。この文書に基づく Visual Studio プロジェクトを作成するためには、事前に VBA プロジェクトを文書に追加しておく必要があります。これを行わないと、Visual Studio Tools for Office は VBA コードが Visual Studio Tools for Office アセンブリを呼び出すことができるように VBA プロジェクトを変更できません。

使用する VBA コードが含まれる既存の文書がある場合は、この手順を省略できます。

VBA コードを含む文書を作成するには

  1. Word 2007 を起動します。

  2. アクティブ文書を DocumentWithVBA という名前の Word マクロ有効文書 (*.docm) として保存します。この文書は、デスクトップなどの便利な場所に置きます。

  3. リボンの [開発] タブをクリックします。

    Bb608609.alert_note(ja-jp,VS.90).gifメモ :

    [開発] タブが表示されていない場合は、最初にこれを表示する必要があります。詳細については、「方法 : [開発] タブをリボンに表示する」を参照してください。

  4. [コード] グループの [Visual Basic] をクリックします。

    Visual Basic エディタが開きます。

  5. [プロジェクト] ウィンドウの [ThisDocument] をダブルクリックします。

    ThisDocument オブジェクトのコード ファイルが開きます。

  6. コード ファイルに次の VBA コードを追加します。このコードには、何も操作を実行しない簡単な関数が定義されています。この関数は、文書内に VBA プロジェクトが存在することを確認することだけを目的としています。これは、このチュートリアルの後の手順で必要となります。

    Sub EmptySub()
    End Sub
    
  7. 文書を保存し、Word を終了します。

プロジェクトの作成

次に、前の手順で作成したマクロ有効文書を使用する、Word 2007 用のドキュメント レベルのプロジェクトを作成します。

新しいプロジェクトを作成するには

  1. Visual Studio を起動します。

  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。IDE が Visual Basic の開発設定を使用するように設定されている場合は、[ファイル] メニューの [新しいプロジェクト] をクリックします。

  3. [プロジェクトの種類] ペインで、[Visual Basic] を展開し、さらに [Office] を展開します。

  4. 2007 フォルダを選択します。

  5. [テンプレート] ペインで Word 文書プロジェクトを選択します。

  6. [プロジェクト名] ボックスに「CallingCodeFromVBA」と入力します。

  7. [OK] をクリックします。

    Visual Studio Tools for Office プロジェクト ウィザードが開きます。

  8. [既存のドキュメントをコピーする] を選択し、[既存のドキュメントの完全パス] ボックスで、前の手順で作成した文書 DocumentWithVBA の場所を指定します。独自に作成したマクロ有効文書を使用する場合は、その文書の場所を指定します。

  9. [完了] をクリックします。

    Visual Studio によって、デザイナで DocumentWithVBA 文書が開き、ソリューション エクスプローラCallingCodeFromVBA プロジェクトが追加されます。

文書の場所に対する信頼の付与

ソリューションのコードを文書内の VBA コードに公開するためには、文書内の VBA に実行についての信頼を付与する必要があります。これにはいくつかの方法があります。このチュートリアルでは、Word のセキュリティ センターで文書の場所に信頼を付与します。

文書の場所に信頼を付与するには

  1. Word を起動します。

  2. Office 2007 ボタン(Microsoft Office ボタン) をクリックします。

  3. [Word のオプション] をクリックします。

  4. カテゴリ ペインで、[セキュリティ センター] をクリックします。

  5. 詳細ペインで [セキュリティ センターの設定] をクリックします。

  6. カテゴリ ペインで [信頼できる場所] をクリックします。

  7. 詳細ペインの [新しい場所の追加] をクリックします。

  8. [Microsoft Office の信頼できる場所] ダイアログ ボックスで、CallingCodeFromVBA プロジェクトがあるフォルダに移動します。

  9. [この場所のサブフォルダも信頼する] を選択します。

  10. [Microsoft Office の信頼できる場所] ダイアログ ボックスで [OK] をクリックします。

  11. [セキュリティ センター] ダイアログ ボックスで [OK] をクリックします。

  12. [Word のオプション] ダイアログ ボックスで [OK] をクリックします。

  13. Word を終了します。

ThisDocument クラスへのメソッドの追加

VBA プロジェクトのセットアップが完了したので、次に VBA コードから呼び出す ThisDocument ホスト項目クラスにメソッドを追加します。

ThisDocument クラスにメソッドを追加するには

  1. ソリューション エクスプローラ[ThisDocument.vb] を右クリックし、[コードの表示] をクリックします。

    コード エディタで ThisDocument.vb ファイルが開きます。

  2. 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
    
  3. プロジェクトをビルドします。

VBA コードへのメソッドの公開

CreateTable メソッドを文書内の VBA コードに公開するには、ThisDocument ホスト項目の EnableVbaCallers プロパティを True に設定します。

VBA コードにメソッドを公開するには

  1. ソリューション エクスプローラで、ThisDocument.vb をダブルクリックします。

    デザイナで DocumentWithVBA ファイルが開きます。

  2. [プロパティ] ウィンドウで [EnableVbaCallers] プロパティを選択し、値を True に変更します。

  3. 表示されたメッセージで [OK] をクリックします。

  4. プロジェクトをビルドします。

VBA コードからのメソッドの呼び出し

ここで、文書内の VBA コードから CreateTable メソッドを呼び出すことができます。

Bb608609.alert_note(ja-jp,VS.90).gifメモ :

このチュートリアルでは、プロジェクトのデバッグ中に VBA コードを文書に追加します。この文書に追加する VBA コードは、次にプロジェクトをビルドするときに上書きされます。これは、Visual Studio によって、ビルド出力フォルダ内のドキュメントが、メイン プロジェクト フォルダのドキュメントのコピーで置換されるためです。VBA コードを保存する場合は、コードをプロジェクト フォルダ内の文書にコピーします。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

VBA コードからメソッドを呼び出すには

  1. F5 キーを押してプロジェクトを実行します。

  2. [開発] タブの [コード] グループで [Visual Basic] をクリックします。

    Visual Basic エディタが開きます。

  3. [挿入] メニューの [モジュール] をクリックします。

  4. 新しいモジュールに次のコードを追加します。

    このコードは Visual Studio Tools for Office アセンブリの CreateTable メソッドを呼び出します。マクロは、ThisDocument オブジェクトの CallVSTOAssembly プロパティを使用して、このメソッドにアクセスします。このプロパティは、前の手順で EnableVbaCallers プロパティを設定したときに自動的に生成されています。

    Sub CreateTable()
        Call ThisDocument.CallVSTOAssembly.CreateTable("Employee Name", "Start Date")
    End Sub
    
  5. F5 キーを押します。

  6. 文書に新しい表が追加されたことを確認します。

  7. 変更を保存せずに Word を終了します。

次の手順

Visual Studio Tools for Office ソリューションのコードを VBA から呼び出す方法の詳細については、次の各トピックを参照してください。

参照

処理手順

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

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

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

概念

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

ドキュメント レベルのカスタマイズのプログラミング