2012-01-05 10 views
0

異なるオフィスバージョン、それらを管理するための異なるcomタイプライブラリがあります。comの相互運用性による2003-2010版のExcelの自動化

誰かが別のExcelバージョンで動作するようにコードを書くべきですか? PIAはどのようなプロジェクトに含めるべきですか?

どのようにオフィスのマルチバージョン化の問題を解決するには?

+0

ちょうどチェック:ASP.NETや他のサーバーサイドアプリケーションでこれを使用しないことを祈っていますか? –

+0

いいえ、ちょうど一般的なwinforms。 – user740144

答えて

3

1)

2)が後半

を結合し、あなたのコードは、任意のバージョンで動作しますに固執動的結合を利用します。

// work with any version 
Type wordType = Type.GetTypeFromProgId("Word.Application"); 

dynamic wordApp = Activator.CreateInstance(wordType); 

// late binding + dynamics - always works 
wordApp.Visible = true; 
+0

すべてのオフィスバージョンで100%確実に動作しますか?このような作成されたタイプでどのメソッドを実行できるかは、どのようにしてわかりますか?動的/遅延結合の例がありますか? – user740144

+0

はい、私は確信しています。 COM interop on dynamicsはレイトバインディングを使用していますが、この機能はC#4で導入されました。遅延バインディングは、すべてのプロパティ/メソッドで機能します。 –

+0

マシンに複数のPIAがある場合、どのように動作しますか?私が呼んでいる方法を持っているものを取りますか? – user740144

4

これは、.NETプログラムを書くとWindows 98とWindows 7の最初の選択肢は明らかである上で実行することを期待しては根本的に異なるではありません、あなたは.NET 2.0をターゲットにする必要がありますまたはそれがにISN Officeと同じで、サポートしたい最も低いバージョンを選んでください。

マイクロソフトでは、Office用のCOM相互運用機能を下位互換性を維持する素晴らしい仕事をしています。新しいバージョンのOfficeを使用しているユーザーが問題なくプログラムを使用できるというのは良いことです。これはもちろんではなく、の保証です。テストする必要があります。どのバージョンのOfficeをサポートするかについては、それ自体がガイドとなるはずです。あなたがアクセスできる方がよいでしょう。 MSDNサブスクリプションは、異なるバージョンを取得するのに適しています。

あなたがやりたい最後のことは、Wiktorの示唆どおりのレイトバインディングを使用することです。以前のバージョンでは利用できなかったインターフェイスを誤って使用することを阻止するものではありません。