Partager via


Comment : attacher des extensions de code managé à des documents

Vous pouvez attacher un assembly de personnalisation à un document Microsoft Office Word ou un classeur Microsoft Office Excel existant. Tous les formats de fichier pris en charge par les projets Microsoft Office et les outils de développement dans Visual Studio 2010 peuvent être utilisés pour le document ou le classeur. Pour plus d'informations, consultez Architecture des personnalisations au niveau du document.

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.

Pour attacher une personnalisation à un document Word ou Excel, utilisez la méthode AddCustomization de la classe ServerDocument. Étant donné que la classe ServerDocument est conçue pour s'exécuter sur un ordinateur sur lequel Microsoft Office n'est pas installé, il est possible d'utiliser cette méthode dans les solutions qui ne sont pas directement liées au développement Microsoft Office (telles qu'une console ou une application Windows Forms).

Notes

Le chargement de la personnalisation échouera si le code attend des contrôles que le document spécifié ne possède pas.

lien vers la vidéo 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 joindre des extensions de code managé à un document

  1. 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 et Microsoft.VisualStudio.Tools.Applications.Runtime.dll (si le projet cible .NET Framework 4).

      ou

    • Microsoft.VisualStudio.Tools.Applications.ServerDocument.v10.0.dll et Microsoft.VisualStudio.Tools.Applications.Runtime.v9.0.dll (si le projet cible le .NET Framework 3.5).

  2. Ajoutez l'instruction Imports ou using suivante en haut de votre fichier de code.

    Imports Microsoft.VisualStudio.Tools.Applications
    Imports Microsoft.VisualStudio.Tools.Applications.Runtime
    
    using Microsoft.VisualStudio.Tools.Applications;
    using Microsoft.VisualStudio.Tools.Applications.Runtime;
    
  3. Appelez la méthode AddCustomization statique.

    L'exemple de code suivant utilise la surcharge AddCustomization. Cette surcharge utilise le chemin d'accès complet du document et un Uri qui spécifie l'emplacement du manifeste de déploiement pour la personnalisation que vous voulez joindre au document. Cet exemple part du principe qu'un document Word appelé WordDocument1.docx est affiché sur le Bureau et que le manifeste de déploiement se trouve dans le dossier Publish, également 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)
    
        ' 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. Générez le projet et exécutez l'application sur l'ordinateur où vous souhaitez attacher la personnalisation. Visual Studio 2010 Tools pour Office Runtime doit être installé sur l'ordinateur.

Voir aussi

Tâches

Comment : supprimer des extensions de code managé de documents

Concepts

Gestion de documents sur un serveur à l'aide de la classe ServerDocument

Manifestes d'application et de déploiement dans les solutions Office