アドインでCreateRibbonExtensibilityObject()
が呼び出されたときに、VSTOアドインでOffice/Excelのバージョンを確認したいと思います。私はこれで問題が発生している、と遭遇してきた:アドインのこれはアプリケーションが設定されている前にVSTO 4のOfficeバージョンを確認します。アプリケーションが
this.Application
は、それはまだこの時点でVSTOで設定されていない、null
です。- が
CreateRibbonExtensibilityObject()
の後に呼び出されます。
this.Application.Version
この時点ではまだアドインが初期化されていないようです。 VSTOランタイムがアドインにCreateRibbonExtensibilityObject()
を呼び出すときに、Excelのバージョン(12,14、または15)を判別する方法はありますか? ItemProviderインがインスタンス化されたことを見つける
UPDATE
、私は主要なオフィスのバージョンを取得するために、次を使用していました。
FieldInfo temp = this.ItemProvider.GetType().GetField("_officeVersion", BindingFlags.NonPublic | BindingFlags.Instance);
uint officeVersion = (uint)temp.GetValue(this.ItemProvider);
私はSliverNinjaの回答も受け入れています。
[別の質問]への回答(https://stackoverflow.com/questions/28925050/how-to-know-which-word-version-is-installed-from-my-add-in- ribbon-with-c-shar)は、この質問の前提条件(起動方法では取得できないこと)が、アプリケーションレベルのアドインではもはや有効ではないことを示唆しています。私はスタートアップの方法でもドキュメントレベルのソリューションで試してみましたが、それは問題ありませんでした。 – Chris
@Chris、これはこの質問とは関係ありません。 CreateRibbonExtensibilityObjectは、起動メソッドの前に呼び出されます。この質問は、起動メソッドの前にバージョンを取得する方法を具体的に尋ねました。 – Dan
ああ、私の間違い。 – Chris