Share via


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

更新 : 2007 年 11 月

対象

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

プロジェクトの種類

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

Microsoft Office のバージョン

  • 2007 Microsoft Office system

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

2 種類のコードを連携させる場合は、Visual Basic プロジェクトのコードを Visual Basic for Applications (VBA) コードに公開することができます。

Visual Basic プロセスは Visual C# プロセスとは異なります。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」および「方法 : Visual C# プロジェクトのコードを VBA に公開する」を参照してください。

ホスト項目クラスにあるコードに対するプロセスと、その他のクラスにあるコードに対するプロセスは異なります。

  • ホスト項目クラスにあるコードを公開する

  • ホスト項目クラスにはないコードを公開する

ホスト項目クラスにあるコードを公開する

ホスト項目クラスにある Visual Basic コードを VBA コードで呼び出すことができるようにするには、ホスト項目の EnableVbaCallers プロパティを True に設定します。

ホスト項目クラスのメソッドを公開し、VBA から呼び出す方法を説明するチュートリアルについては、「チュートリアル : VBA から Visual Basic プロジェクトのコードを呼び出す」を参照してください。ホスト項目の詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

ホスト項目クラスにあるコードを VBA に公開するには

  1. マクロをサポートする Word 文書、Excel ブック、または Excel テンプレートに基づく、VBA コードが既に含まれているドキュメント レベルの Visual Basic プロジェクトを開くか、または作成します。 

    マクロをサポートするドキュメント ファイル形式の詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

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

    この機能は、Word テンプレート プロジェクトでは使用できません。

  2. ドキュメント内の VBA コードがユーザーにマクロの有効化を要求することなく実行可能であることを確認します。VBA コードを信頼して実行できるように、Word または Excel のセキュリティ センターの設定にある信頼できる場所の一覧に、Visual Studio Tools for Office プロジェクトの場所を追加します。

  3. VBA に公開するプロパティ、メソッド、またはイベントを、プロジェクト内のいずれかのホスト項目クラスに追加し、新しいメンバを Public として宣言します。クラスの名前は、アプリケーションによって異なります。

    • Word プロジェクトの場合、ホスト項目クラスの名前は既定で ThisDocument になります。

    • Excel プロジェクトの場合、ホスト項目クラスの名前は既定で ThisWorkbook、Sheet1、Sheet2、および Sheet3 になります。

  4. ホスト項目の EnableVbaCallers プロパティを True に設定します。このプロパティは、ホスト項目をデザイナで開いたときに [プロパティ] ウィンドウで利用できます。

    このプロパティを設定すると、Visual Studio Tools for Office によって自動的に ReferenceAssemblyFromVbaProject プロパティが True に設定されます。このプロパティの詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

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

    ブックまたは文書に VBA コードが含まれていない場合、またはドキュメント内の VBA コードに実行に対する信頼が付与されていない場合に、EnableVbaCallers プロパティを True に設定するとエラー メッセージが表示されます。これは、このような場合、Visual Studio Tools for Office が文書内の VBA プロジェクトを変更できないからです。

  5. 表示されたメッセージで [OK] をクリックします。このメッセージは、プロジェクトを Visual Studio から実行するときに VBA コードをブックまたは文書に追加した場合、次にプロジェクトをビルドするときにその VBA コードが失われることを示します。これは、プロジェクトをビルドするたびに、ビルド出力フォルダ内のブックまたは文書が上書きされるからです。

    この時点で、Visual Studio Tools for Office によって、VBA プロジェクトがアセンブリを呼び出すことができるようにプロジェクトが構成されます。さらに、Visual Studio Tools for Office は、CallVSTOAssembly というプロパティを、VBA プロジェクトの ThisDocument、ThisWorkbook、Sheet1、Sheet2、または Sheet3 の各モジュールに追加します。このプロパティを使用して、VBA に公開したクラスのパブリック メンバにアクセスできます。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

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

ホスト項目クラスにはないコードを公開する

ホスト項目クラスにはない Visual Basic コードを VBA コードで呼び出すことができるようにするには、コードを変更して VBA から参照できるようにします。

ホスト項目クラスにはないコードを VBA に公開するには

  1. マクロをサポートする Word 文書、Excel ブック、または Excel テンプレートに基づく、VBA コードが既に含まれているドキュメント レベルの Visual Basic プロジェクトを開くか、または作成します。

    マクロをサポートするドキュメント ファイル形式の詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

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

    この機能は、Word テンプレート プロジェクトでは使用できません。

  2. ドキュメント内の VBA コードがユーザーにマクロの有効化を要求することなく実行可能であることを確認します。VBA コードを信頼して実行できるように、Word または Excel のセキュリティ センターの設定にある信頼できる場所の一覧に、Visual Studio Tools for Office プロジェクトの場所を追加します。

  3. VBA に公開するメンバをプロジェクトのパブリック クラスに追加し、そのメンバを public として宣言します。

  4. VBA に公開するクラスに次の ComVisibleAttribute 属性および ComClassAttribute 属性を適用します。これらの属性によって、クラスが VBA から参照できるようになります。

    <Microsoft.VisualBasic.ComClass()> _
    <System.Runtime.InteropServices.ComVisibleAttribute(True)> _
    
  5. プロジェクト内のホスト項目クラスの GetAutomationObject メソッドをオーバーライドして、VBA に公開するクラスのインスタンスを返します。次のコード例では、DocumentUtilities という名前のクラスを VBA に公開することを前提としています。

    Protected Overrides Function GetAutomationObject() As Object
        Return New DocumentUtilities()
    End Function
    
  6. 文書 (Word の場合) またはワークシート (Excel の場合) を Visual Studio 内のデザイナで開きます。

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

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

    ブックまたは文書に VBA コードが含まれていない場合、または文書内の VBA コードに実行に対する信頼が付与されていない場合に、ReferenceAssemblyFromVbaProject プロパティを選択し、値を True に設定するとエラー メッセージが表示されます。これは、このような場合、Visual Studio Tools for Office が文書内の VBA プロジェクトを変更できないからです。

  8. 表示されたメッセージで [OK] をクリックします。このメッセージは、プロジェクトを Visual Studio から実行するときに VBA コードをブックまたは文書に追加した場合、次にプロジェクトをビルドするときにその VBA コードが失われることを示します。これは、プロジェクトをビルドするたびに、ビルド出力フォルダ内のブックまたは文書が上書きされるからです。

    この時点で、Visual Studio Tools for Office によって、VBA プロジェクトがアセンブリを呼び出すことができるようにプロジェクトが構成されます。さらに、Visual Studio Tools for Office は GetManagedClass メソッドを VBA に追加します。このメソッドは VBA プロジェクト内のどこからでも呼び出すことができ、それによって VBA に公開したクラスにアクセスできます。詳細については、「VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す」を参照してください。

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

参照

処理手順

方法 : Visual Studio Tools for Office プロジェクトを作成する

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

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

概念

Visual Studio における Office ソリューションの作成

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

VBA からドキュメント レベルのカスタマイズ内のコードを呼び出す