Comment : supprimer des extensions de code managé de documents
Vous pouvez supprimer par programmation l'assembly de personnalisation d'un document ou d'un classeur faisant partie d'une personnalisation au niveau du document pour Microsoft Office Word ou Microsoft Office Excel. Les utilisateurs peuvent alors ouvrir les documents et afficher le contenu, mais les interfaces utilisateur personnalisées que vous ajoutez aux documents n'apparaissent pas et votre code ne s'exécute pas.
S'applique à : Les informations contenues dans cette rubrique s'appliquent aux projets de niveau document pour les applications suivantes : Excel 2007, Excel 2010, Word 2007 et Word 2010. Pour en savoir plus, consultez Fonctionnalités disponibles par type d'application et de projet Office.
Vous pouvez supprimer l'assembly de personnalisation à l'aide de l'une des méthodes RemoveCustomization fournies par Visual Studio Tools pour Office Runtime. La méthode à utiliser dépend de si vous souhaitez supprimer la personnalisation au moment de l'exécution (autrement dit, en exécutant le code dans la personnalisation pendant que le document Word ou le classeur Excel est ouvert) ou si vous souhaitez supprimer la personnalisation d'un document fermé ou d'un document se trouvant sur un serveur sur lequel Microsoft Office n'est pas installé.
Pour une démonstration vidéo connexe, consultez How Do I: Attach or Detach a VSTO Assembly from a Word Document? (page éventuellement en anglais).
Pour supprimer l'assembly de personnalisation au moment de l'exécution
Dans votre code de personnalisation, appelez la méthode Document.RemoveCustomization (pour Word) ou la méthode Workbook.RemoveCustomization (pour Excel). Cette méthode doit être appelée uniquement une fois que la personnalisation n'est plus nécessaire.
L'endroit de l'appel de la méthode dépend de la personnalisation utilisée. Par exemple, si les utilisateurs utilisent les fonctionnalités de votre personnalisation jusqu'à ce qu'ils soient prêts à envoyer le document à d'autres utilisateurs qui nécessitent uniquement ce document (et pas sa personnalisation), vous pouvez fournir une interface utilisateur qui appelle RemoveCustomization lorsque l'utilisateur clique dessus. Si votre personnalisation remplit le document de données lorsqu'il est ouvert pour la première fois, mais ne fournit pas toutes les autres fonctionnalités accessibles directement par les utilisateurs, vous pouvez appeler RemoveCustomization dès que votre personnalisation a terminé l'initialisation du document.
Pour supprimer l'assembly de personnalisation à partir d'un document fermé ou d'un document sur un serveur
Dans un projet qui ne requiert pas Microsoft Office, tel qu'une application console ou un projet Windows Forms, ajoutez une référence à l'un des assemblys suivants :
Microsoft.VisualStudio.Tools.Applications.ServerDocument.dll (si le projet cible le .NET Framework 4)
Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll (si le projet cible le .NET Framework 3.5)
Ajoutez l'instruction Imports ou using suivante en haut de votre fichier de code.
Imports Microsoft.VisualStudio.Tools.Applications
using Microsoft.VisualStudio.Tools.Applications;
Appelez la méthode statique RemoveCustomization de la classe ServerDocument et spécifiez le chemin d'accès du document de solution pour le paramètre.
L'exemple de code suivant suppose que vous supprimez la personnalisation d'un document intitulé WordDocument1.docx qui se trouve sur le bureau.
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); }
Générez le projet et exécutez l'application sur l'ordinateur où vous souhaitez supprimer la personnalisation. Visual Studio 2010 Tools pour Office Runtime doit être installé sur l'ordinateur.
Voir aussi
Tâches
Comment : attacher des extensions de code managé à des documents
Concepts
Gestion de documents sur un serveur à l'aide de la classe ServerDocument