方法: マネージ コード拡張機能をドキュメントにアタッチする

カスタマイズ アセンブリを、既存の Microsoft Office Word 文書または Microsoft Office Excel ブックにアタッチできます。 Microsoft Office プロジェクトおよび Visual Studio 2010 の開発ツールでサポートされている任意のファイル形式の文書またはブックを使用できます。 詳細については、「ドキュメント レベルのカスタマイズのアーキテクチャ」を参照してください。

対象: このトピックの情報は、Excel 2007 と Excel 2010、および Word 2007 と Word 2010 のドキュメント レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。

カスタマイズを Word 文書または Excel ドキュメントにアタッチするには、ServerDocument クラスの AddCustomization メソッドを使用します。 ServerDocument クラスは Microsoft Office がインストールされていないコンピューターで実行することを意図されているため、このメソッドは、Microsoft Office 開発に直接関連していないソリューション (コンソール アプリケーションや Windows フォーム アプリケーションなど) で使用できます。

注意

指定されたドキュメントに、コードで予期されているコントロールが含まれていないと、カスタマイズは読み込みに失敗します。

ビデオへのリンク 関連のビデオ デモについては、「How Do I: Attach or Detach a VSTO Assembly from a Word Document? (操作方法: Word 文書から VSTO アセンブリをアタッチまたはデタッチする)」を参照してください。

マネージ コード拡張機能をドキュメントに追加するには

  1. コンソール アプリケーションや Windows フォーム プロジェクトなど、Microsoft Office を必要としないプロジェクトでは、次のアセンブリのうちいずれかに対する参照を追加します。

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll および Microsoft.VisualStudio.Tools.Applications.Runtime.dll (プロジェクトが .NET Framework 4 を対象とする場合)。

      または

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll および Microsoft.VisualStudio.Tools.Applications.Runtime.v9.0.dll (プロジェクトが .NET Framework 3.5 を対象とする場合)。

  2. 次の Imports ステートメントまたは using ステートメントをコード ファイルの先頭に追加します。

    Imports Microsoft.VisualStudio.Tools.Applications
    Imports Microsoft.VisualStudio.Tools.Applications.Runtime
    
    using Microsoft.VisualStudio.Tools.Applications;
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    
  3. 静的な AddCustomization メソッドを呼び出します。

    次のコード例では、AddCustomization オーバーロードを使用します。 このオーバーロードは、ドキュメントの完全パスと、ドキュメントに追加するカスタマイズの配置マニフェストの場所を指定する Uri を使用します。 この例では、WordDocument1.docx という Word 文書がデスクトップ上に存在し、配置マニフェストがデスクトップ上の Publish というフォルダーにあることを前提としています。

    Dim documentPath As String = System.Environment.GetFolderPath( _
         Environment.SpecialFolder.Desktop) + "\WordDocument1.docx"
    Dim runtimeVersion As Integer = 0
    
    Try
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath)
    
        ' Make sure that this document does not yet have any Visual Studio Tools 
        ' for Office customizations.
        If runtimeVersion = 0 Then
            Dim deployManifestPath As String = System.Environment.GetFolderPath( _
                Environment.SpecialFolder.Desktop) & "\Publish\WordDocument1.vsto"
            Dim deploymentManifestUri As New Uri(deployManifestPath)
            ServerDocument.AddCustomization(documentPath, deploymentManifestUri)
            System.Windows.Forms.MessageBox.Show("The document was successfully customized.")
        Else
            System.Windows.Forms.MessageBox.Show("The document is already customized.")
        End If
    Catch ex As FileNotFoundException
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.")
    Catch ex As DocumentNotCustomizedException
        System.Windows.Forms.MessageBox.Show("The document could not be customized." & _
            vbLf & ex.Message)
    End Try
    
    string documentPath = System.Environment.GetFolderPath(
        Environment.SpecialFolder.Desktop) + @"\WordDocument1.docx";
    int runtimeVersion = 0;
    
    try
    {
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath);
    
        // Make sure that this document does not yet have any Visual Studio Tools 
        // for Office customizations.
        if (runtimeVersion == 0)
        {
            string deployManifestPath = System.Environment.GetFolderPath(
                Environment.SpecialFolder.Desktop) + @"\Publish\WordDocument1.vsto";
    
            Uri deploymentManifestUri = new Uri(deployManifestPath);
            ServerDocument.AddCustomization(documentPath, deploymentManifestUri);
            System.Windows.Forms.MessageBox.Show("The document was successfully customized.");
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("The document is already customized.");
        }
    }
    catch (FileNotFoundException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.");
    }
    catch (DocumentNotCustomizedException ex)
    {
        System.Windows.Forms.MessageBox.Show("The document could not be customized.\n" +
            ex.Message);
    }
    
  4. カスタマイズをアタッチするコンピューターで、プロジェクトをビルドしてアプリケーションを実行します。 コンピューターには Visual Studio 2010 Tools for Office Runtime がインストールされている必要があります。

参照

処理手順

方法: マネージ コード拡張をドキュメントから削除する

概念

ServerDocument クラスによるサーバー上のドキュメントの管理

Office ソリューションにおけるアプリケーション マニフェストと配置マニフェスト