Visual StudioでOfficeのCOM相互運用機能への参照を追加するための手法は、次の場所に移動します。
- 参考文献
- 参照を追加
- [ COM ]タブを選択します
- MicrosoftOffice11.0オブジェクトライブラリを選択します
そして、魔法の名前の参照が表示されます:
Microsoft.Office.Core
このProject.csproj
ファイルには、参照の詳細が示されています。
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
そして、プロジェクトはソース管理にチェックインされ、すべてが順調です。
次に、Office 2007の開発者は、ソース管理からプロジェクトを取得しますが、そのような参照が存在しないため、プロジェクトをビルドできません。
彼(つまり私)は.csprojファイルをチェックアウトし、への参照を削除します
Microsoft Office 11.0 Object Library
COM参照を次のように再追加します
Microsoft Office 12.0 Object Library
そして魔法のように名前付きの参照が表示されます:
Microsoft.Office.Core
このProject.csproj
ファイルには、参照の詳細が示されています。
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>4</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
そして、プロジェクトはソース管理にチェックインされ、すべてが順調です。
次に、Office 2003の開発者は、ソース管理からプロジェクトを取得しますが、そのような参照が存在しないため、プロジェクトをビルドできません。
彼(つまり私ではない)は.csprojファイルをチェックアウトし、への参照を削除します
Microsoft Office 12.0 Object Library
COM参照を次のように再追加します
Microsoft Office 11.0 Object Library
そして魔法のように名前付きの参照が表示されます:
Microsoft.Office.Core
このProject.csproj
ファイルには、参照の詳細が示されています。
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
そして、プロジェクトはソース管理にチェックインされ、すべてが順調です。
次に、プロジェクトがビルドされ、CDにプレスされ、 Office2007を使用している顧客に送信されます。
そして、すべてがうまくいっていません。
昔(つまり、.NET dll地獄の前)では、バージョンに依存しないProgIDを使用してOfficeオブジェクトを参照していました。
"Excel.Application"
これは、インストールされたOfficeのclsidに解決されます。
{00024500-0000-0000-C000-000000000046}
次に、COM(言語-ネットワーク擬似コード)の呼び出しを使用してクラスが構築されます。
public IUnknown CreateOleObject(string className)
{
IUnknown unk;
Clsid classID = ProgIDToClassID(className);
CoCreateInstance(classID, null,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IUnknown, out unk);
return unk;
}
質問
1)インストールされたOfficeアプリケーションを自動化するために承認された手法は何ですか?
2)Office 2003プライマリ相互運用機能アセンブリは何に役立ちますか?
3)Office 2003プライマリ相互運用機能アセンブリを使用する場合、Office 2003をインストールする必要がありますか?
4)Office 2003プライマリ相互運用機能アセンブリを使用してビルドした場合、顧客はOffice 20003に永久に結びついていますか?
5)Office 2007のプライマリ相互運用機能アセンブリはありますか?
6)Office 2007プライマリ相互運用機能アセンブリをインストールする場合、Office 2007をインストールする必要がありますか?
7)標準のCOM相互運用機能を使用してExcel、Word、またはOutlookを駆動することの何が問題になっていますか?例えば:
[ComImport]
[Guid("00024500-0000-0000-C000-000000000046")]
public class Excel
{
}
8)追加したときに達成するものは何ですか
- [COM]タブの項目への参照、
- [ComImport]を使用するのではなく、
- Office 2007プライマリ相互運用機能アセンブリを使用するのとは対照的に?
9)COMタブを使用して参照を追加することは、表示する前にタイプライブラリが必要であることを除いて、COM相互運用機能を使用することと同じですか?
10)Office2003プライマリ相互運用機能アセンブリは下位互換性と上位互換性がありますか。-Office14-Office2007-Office 2003-Office XP-Office 2000-Office 97-Office 95
顧客と開発者が新しいバージョンのOfficeをインストールした場合でも、それは機能しますか?
11)アプリケーションと一緒にOffice 2003プライマリ相互運用機能アセンブリを出荷する必要がありますか?
12)お客様は、アプリケーションを使用する前に、Office 2003プライマリ相互運用機能アセンブリをインストールする必要がありますか?
13)お客様がOffice 2003プライマリ相互運用機能アセンブリをインストールする場合、Officeをインストールする必要がありますか?
14)お客様がOffice 2003プライマリ相互運用機能アセンブリをインストールする場合、Office 2003をインストールする必要がありますか?
15)Office 2003 Primary InteropAssemblesは無料の軽量で再配布可能なバージョンのOffice2003ですか?
16)開発マシンにOffice 2007が搭載されている場合、Office 2003 PIAを使用して、Office XPがインストールされている顧客に出荷できますか?