質問

最初のWord 2007アドインを開発し、OfficeRibbonをプロジェクトに追加しました。ボタンクリックハンドラーでは、現在の Word.Document または Word.Application のいずれかへの参照が必要です。

OfficeRibbon.Context プロパティを介して参照を取得しようとしています。このプロパティでは、現在の Application オブジェクトを参照する必要があります。ただし、常に null です。

誰でもどちらかを知っていますか

a) OfficeRibbon.Context が正しく表示されるようにするために何かする必要がある場合は、
b)他の方法があれば、WordアプリケーションまたはアクティブなWord文書への参照を取得できますか?

注:

  • VS2008 SP1を使用しています

  • リボンは初期化されたように見えます。コンストラクターとOnLoadメンバーの両方でデバッガーをステップ実行できます。ボタンクリックハンドラーは正しく実行されます。

  • こちらはこのプロパティのオンラインヘルプ;

  

OfficeRibbon.Contextプロパティ

     

C#
   public Object Context {get;内部セット; }

     

このOfficeRibbonオブジェクトに関連付けられているインスペクターウィンドウまたはアプリケーションインスタンスを表すオブジェクト。

     

備考

     

Outlookでは、このプロパティは、このOfficeRibbonが表示されるインスペクターウィンドウを指します。

     

Excel、Word、およびPowerPointでは、このプロパティは、このOfficeRibbonが表示されるアプリケーションインスタンスを返します。

役に立ちましたか?

解決

VS2008 SP1を使用してExcel 2007アドインを作成しているときにもこの問題が発生しました。私が使用した回避策は、メインのAddInクラスの internal static プロパティにアプリケーションを保存し、リボンのイベントハンドラーでそれを参照することでした。

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);
    }
    ...
}

他のヒント

次を使用してドキュメントを参照してみてください:

Globals.ThisDocument.[some item]

MSDNリファレンス

入手方法:

Globals.ThisAddIn.Application

Office 2007の単語オブジェクトモデルの変更についてはあまり知りませんが、VBAの知識を使用した説明はこちらです。

アプリケーションは、グローバルに利用可能なオブジェクトです。 また、Application.ActiveDocumentは、現在のドキュメントへのハンドルを取得する必要があります。

推測:リボンをどのように追加しようとしていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top