次の方法で共有


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

Microsoft Office Word または Microsoft Office Excel のドキュメント レベルのカスタマイズの一部であるドキュメントまたはブックから、カスタマイズ アセンブリをプログラムによって削除することができます。 その後、ドキュメントを開き、内容を表示できますが、ドキュメントに追加されたどのカスタム ユーザー インターフェイス (UI) も表示されません。また、コードも実行されません。

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

カスタマイズ アセンブリを削除するには、Visual Studio Tools for Office Runtime によって提供されるいずれかの RemoveCustomization メソッドを使用します。 使用するメソッドは、実行時にカスタマイズを削除する (Word 文書または Excel ブックが開いているときにカスタマイズでコードを実行する) か、閉じられたドキュメントまたは Microsoft Office がインストールされていないサーバー上にあるドキュメントからカスタマイズを削除するかによって異なります。

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

実行時にカスタマイズ アセンブリを削除するには

  • カスタマイズ コードで、Document.RemoveCustomization メソッド (Word の場合) または Workbook.RemoveCustomization メソッド (Excel の場合) を呼び出します。 このメソッドは、カスタマイズの必要がなくなった場合にのみ呼び出す必要があります。

    コード内でこのメソッドを呼び出す場所は、カスタマイズが使用される状況によって異なります。 たとえば、(カスタマイズではなく) 文書自体を必要とする他のクライアントに文書を送信する準備が整うまで顧客がカスタマイズの機能を使用する場合は、顧客がクリックしたときに RemoveCustomization を呼び出す UI を提供できます。 または、文書が最初に開かれたときにカスタマイズによって文書のデータが設定され、顧客が直接アクセスする他の機能はカスタマイズでは提供されない場合、カスタマイズが文書の初期化を完了した直後に RemoveCustomization を呼び出すことができます。

閉じられたドキュメントまたはサーバー上にあるドキュメントからカスタマイズ アセンブリを削除するには

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

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

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

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

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  3. ServerDocument クラスの静的な RemoveCustomization メソッドを呼び出し、ソリューション ドキュメントのパスをパラメーターに指定します。

    次のコード例では、デスクトップ上にある WordDocument1.docx という名前のドキュメントからカスタマイズを削除することを前提としています。

    Dim documentPath As String = System.Environment.GetFolderPath( _
        Environment.SpecialFolder.Desktop) & "\WordDocument1.docx"
    Dim runtimeVersion As Integer = 0
    
    Try
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath)
        If runtimeVersion = 3 Then
            ServerDocument.RemoveCustomization(documentPath)
            System.Windows.Forms.MessageBox.Show("The customization has been removed.")
        End If
    Catch ex As FileNotFoundException
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.")
    Catch ex As IOException
        System.Windows.Forms.MessageBox.Show("The specified document is read-only.")
    Catch ex As InvalidOperationException
        System.Windows.Forms.MessageBox.Show("The customization could not be removed." & _
            vbLf & ex.Message)
    End Try
    
    string documentPath = System.Environment.GetFolderPath(
        Environment.SpecialFolder.Desktop) + @"\WordDocument1.docx";
    int runtimeVersion = 0;
    
    try
    {
        runtimeVersion = ServerDocument.GetCustomizationVersion(documentPath);
    
        if (runtimeVersion == 3)
        {
            ServerDocument.RemoveCustomization(documentPath);
            System.Windows.Forms.MessageBox.Show("The customization has been removed.");
        }
    }
    catch (FileNotFoundException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document does not exist.");
    }
    catch (IOException)
    {
        System.Windows.Forms.MessageBox.Show("The specified document is read-only.");
    }
    catch (InvalidOperationException ex)
    {
        System.Windows.Forms.MessageBox.Show("The customization could not be removed.\n" +
            ex.Message);
    }
    
  4. カスタマイズを削除するコンピューターで、プロジェクトをビルドしてアプリケーションを実行します。 コンピューターには Visual Studio 2010 Tools for Office Runtime がインストールされている必要があります。

参照

処理手順

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

概念

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