WinformsアプリケーションでOffice 2003/2007 COMオブジェクト(正しいもの)を選択する

StackOverflow https://stackoverflow.com/questions/158428

質問

インストールされているオフィスのバージョンに応じて、Office 2003またはOffice 2007 COMオブジェクトを参照する必要があるWindowsフォームアプリケーション(C#またはVB.NET)を作成しています。このシナリオを処理し、実行時に正しいCOMオブジェクトを参照する最良の方法は何ですか?

役に立ちましたか?

解決

Office 2007オブジェクトモデルの新しく追加されたオブジェクトとメソッドのいずれかを使用する場合を除き、Office 2003 PIAを参照するビルドは問題ありません。正しいバージョンのPIAがターゲットシステムに展開されていることを確認してください。

  

この問題を回避する別の方法は、後のPIAの依存関係を削除することです。 Officeには高度な下位互換性があるため、アドインがOffice 2003(Office 2003 PIAを使用)で動作する場合、Office 2007(Office 2007 PIAを使用)でも動作するはずです。

     

PIAを使用しない複数のOfficeバージョン用のアドイン(Andrew Whitechapel)

それ以外の場合は、Andrew Whitechapelによる次のブログ記事をお勧めします。 Officeの複数のバージョンに対して1つのアドインを構築できますか?(これは公式にはサポートされていないというBIG警告を参照してくださいMicrosoftによる)。

PIAを必要としない別のオプション(これによりデプロイメントが非常に簡単になります)は、遅延バインディングと一緒に ComImport を使用することです。ただし、これは相互運用機能アセンブリを使用するよりも遅くなりますが、自動化コードが高速パス上にない場合、これは適切なソリューションになる可能性があります。同じブログ投稿でこれを実装する方法の説明があります: PIAのない複数のOfficeバージョンのアドイン

他のヒント

Officeのプライマリ相互運用機能アセンブリはこれに役立ちませんか?私はそれらを真剣に使用する必要がなかったので確実に知りませんが、そうするだろうと思います。

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