Gewusst wie: Entfernen von Erweiterungen durch verwalteten Code aus Dokumenten

Sie können die Anpassungsassembly programmgesteuert aus einem Dokument oder einer Arbeitsmappe entfernen, das bzw. die Teil einer Anpassung auf Dokumentebene für Microsoft Office Word oder Microsoft Office Excel ist. Benutzer können die Dokumente dann öffnen und den Inhalt anzeigen, jedoch werden benutzerdefinierte Benutzeroberflächen, die Sie den Dokumenten hinzufügen, nicht angezeigt, und der von Ihnen erstellte Code wird nicht ausgeführt.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokumentebene für die folgenden Anwendungen: Excel 2007 und Excel 2010, Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

Sie können die Anpassungsassembly entfernen, indem Sie eine der RemoveCustomization-Methoden verwenden, die von Visual Studio Tools for Office-Laufzeit bereitgestellt werden. Welche Methode Sie verwenden, hängt davon ab, ob Sie die Anpassung zur Laufzeit entfernen möchten (d. h. durch Ausführen von Code in der Anpassung bei geöffnetem Word-Dokument bzw. geöffneter Excel-Arbeitsmappe) oder Sie die Anpassung aus einem geschlossenen Dokument bzw. einem Dokument entfernen möchten, das sich auf einem Server befindet, auf dem Microsoft Office nicht installiert ist.

Link zu Video Eine entsprechende Videodemo finden Sie im Thema zum Anfügen oder Trennen einer VSTO-Assembly an ein bzw. von einem Word-Dokument (möglicherweise in englischer Sprache).

So entfernen Sie die Anpassungsassembly zur Laufzeit

  • Rufen Sie im Anpassungscode die Document.RemoveCustomization-Methode (für Word) oder die Workbook.RemoveCustomization-Methode (für Excel) auf. Diese Methode sollte nur aufgerufen werden, wenn die Anpassung nicht mehr benötigt wird.

    Der Ort, an dem Sie diese Methode im Code aufrufen, hängt von der Verwendung der Anpassung ab. Verwenden Kunden beispielsweise die Funktionen der Anpassung, bis sie bereit sind, das Dokument an andere Clients zu senden, die nur das Dokument selbst (nicht die Anpassung) benötigen, können Sie Benutzeroberflächenelemente bereitstellen, die RemoveCustomization aufrufen, wenn der Kunde darauf klickt. Alternativ können Sie, wenn die Anpassung das Dokument beim ersten Öffnen mit Daten auffüllt, die Anpassung jedoch keine anderen Funktionen bereitstellt, auf die Kunden direkt zugreifen, RemoveCustomization aufrufen, sobald die Anpassung die Initialisierung des Dokuments abgeschlossen hat.

So entfernen Sie die Anpassungsassembly aus einem geschlossenen Dokument oder einem Dokument auf einem Server

  1. In einem Projekt, für das Microsoft Office nicht erforderlich ist, z. B. einer Konsolenanwendung oder einem Windows Forms-Projekt, fügen Sie einen Verweis auf eine der folgenden Assemblys hinzufügt:

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (wenn das Projekt auf .NET Framework 4 abzielt)

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (wenn das Projekt auf .NET Framework 3.5 abzielt)

  2. Fügen Sie am Anfang der Codedatei die folgende Imports-Anweisung bzw. using-Anweisung ein.

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  3. Rufen Sie die statische RemoveCustomization-Methode der ServerDocument-Klasse auf, und geben Sie den Pfad zum Projektmappendokument als Parameter an.

    Im folgenden Codebeispiel wird angenommen, dass Sie die Anpassung aus einem Dokument mit dem Namen WordDocument1.docx entfernen, das sich auf dem Desktop befindet.

    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. Erstellen Sie das Projekt, und führen Sie die Anwendung auf dem Computer aus, auf dem Sie die Anpassung entfernen möchten. Auf dem Computer muss Visual Studio 2010-Tools for Office-Laufzeit installiert sein.

Siehe auch

Aufgaben

Gewusst wie: Anfügen von Erweiterungen durch verwalteten Code an Dokumente

Konzepte

Verwalten von Dokumenten auf einem Server mit der ServerDocument-Klasse