Condividi tramite


Procedura: rimuovere estensioni di codice gestito dai documenti

È possibile rimuovere a livello di codice l'assembly di personalizzazione da un documento o da una cartella di lavoro che fa parte di una personalizzazione a livello di documento per Microsoft Office Word o Microsoft Office Excel. Gli utenti potranno quindi aprire i documenti e visualizzarne il contenuto, ma le eventuali interfacce utente personalizzate aggiunte ai documenti non saranno visualizzate e il codice non verrà eseguito.

Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento per Excel 2007, Excel 2010, Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.

È possibile rimuovere l'assembly di personalizzazione utilizzando uno dei metodi RemoveCustomization forniti dal Runtime di Visual Studio Tools per Office. Il metodo da utilizzare varia a seconda che si desideri rimuovere la personalizzazione in fase di esecuzione (ovvero, eseguendo il codice nella personalizzazione quando il documento di Word o la cartella di lavoro di Excel è aperta) o che si desideri rimuovere la personalizzazione da un documento chiuso o da un documento che si trova in un server in cui non è installato Microsoft Office.

Collegamento a video Per una dimostrazione video correlata, vedere la procedura relativa all'associazione o alla dissociazione di un assembly VSTO da un documento di Word.

Per rimuovere l'assembly di personalizzazione in fase di esecuzione

  • Nel codice della personalizzazione, chiamare il metodo Document.RemoveCustomization (per Word) o Workbook.RemoveCustomization (per Excel). Questo metodo deve essere chiamato solo quando la personalizzazione non è più necessaria.

    La posizione da cui si chiama questo metodo nel codice dipende dal modo in cui viene utilizzata la personalizzazione. Ad esempio, se i clienti utilizzano le funzionalità della personalizzazione finché non sono pronti a inviare il documento ad altri clienti che richiedono unicamente il documento e non la personalizzazione, è possibile fornire un'interfaccia utente che chiami RemoveCustomization quando il cliente fa clic su di esso. In alternativa, se la personalizzazione popola il documento con dati quando viene aperto per la prima volta, ma la personalizzazione non fornisce altre funzionalità a cui i clienti possono accedere direttamente, è possibile chiamare RemoveCustomization non appena termina l'inizializzazione del documento da parte della personalizzazione.

Per rimuovere l'assembly di personalizzazione da un documento chiuso o un documento in un server

  1. In un progetto che non richiede Microsoft Office, ad esempio un'applicazione console o un progetto Windows Form, aggiungere un riferimento a uno degli assembly seguenti:

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (se il progetto è destinato a .NET Framework 4).

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (se il progetto è destinato a .NET Framework 3.5).

  2. Aggiungere l'istruzione Imports o using seguente all'inizio del file di codice.

    Imports Microsoft.VisualStudio.Tools.Applications
    
    using Microsoft.VisualStudio.Tools.Applications;
    
  3. Chiamare il metodo statico RemoveCustomization della classe ServerDocument e specificare il percorso del documento della soluzione per il parametro.

    L'esempio di codice seguente presuppone che si stia rimuovendo la personalizzazione da un documento denominato WordDocument1.docx che si trova sul desktop.

    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. Compilare il progetto ed eseguire l'applicazione nel computer in cui si desidera rimuovere la personalizzazione. Nel computer deve essere installato Visual Studio 2010 Tools per Office Runtime.

Vedere anche

Attività

Procedura: associare estensioni di codice gestito a documenti

Concetti

Gestione dei documenti di un server utilizzando la classe ServerDocument