Question

Je développe mon premier complément Word 2007 et j'ai ajouté un OfficeRibbon à mon projet. Dans un gestionnaire de clic sur un bouton, j'aimerais une référence au Word.Document ou au Word.Application actuel.

J'essaie d'obtenir une référence via la propriété OfficeRibbon.Context , qui, selon la documentation, devrait faire référence à l'objet Application actuel. Cependant, il est toujours null .

Est-ce que quelqu'un sait soit

a) si je dois faire quelque chose pour que OfficeRibbon.Context apparaisse correctement rempli?
b) s'il existe un autre moyen d'obtenir une référence à l'application Word ou au document Word actif?

Notes:

  • J'utilise VS2008 SP1

  • Le ruban semble avoir été initialisé correctement: le rendu du ruban est correct dans Word; Je peux faire défiler le débogueur à travers le constructeur et les membres OnLoad; Les gestionnaires de clic de bouton s'exécutent correctement.

  • Voici l'aide en ligne de cette propriété ;

  

Propriété OfficeRibbon.Context

     

C #
   public Object Context {get; ensemble interne; }

     

Un objet représentant la fenêtre d'inspecteur ou l'instance d'application associée à cet objet OfficeRibbon.

     

Remarques

     

Dans Outlook, cette propriété fait référence à la fenêtre Inspecteur dans laquelle cet OfficeRibbon est affiché.

     

Dans Excel, Word et PowerPoint, cette propriété renvoie l'instance d'application dans laquelle ce OfficeRibbon est affiché.

Était-ce utile?

La solution

J'ai également rencontré ce problème lors de la création d'un complément Excel 2007 à l'aide de VS2008 SP1. La solution de contournement que j'ai utilisée consistait à stocker l'application dans une propriété internal statique dans la classe AddIn principale, puis à la référencer dans le gestionnaire d'événements de mon ruban:

public partial class ThisAddIn
{
    internal static Application Context { get; private set; }

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Context = Application;
    }
    ...
}

public partial class MyRibbon : OfficeRibbon
{
    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        DoStuffWithApplication(ThisAddIn.Context);
    }
    ...
}

Autres conseils

Essayez de référencer le document avec:

Globals.ThisDocument.[some item]

référence MSDN

Obtenez-le de:

Globals.ThisAddIn.Application

Bien que je ne sache pas grand chose des modifications apportées au modèle objet-mot d'Office 2007, voici mon explication à l'aide de la connaissance VBA.

L'application est un objet disponible globalement. En outre, Application.ActiveDocument devrait vous permettre de gérer le document actuel.

Spéculation: comment essayez-vous d'ajouter le ruban?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top