using System; using System.Web; using System.Reflection; // For Missing.Value and BindingFlags using System.Runtime.InteropServices; // For COMException using Excel = Microsoft.Office.Interop.Excel;
//パターン1 Excel.Application app; //EXCEL app = new Excel.Application();
//パターン2 Type t = Type.GetTypeFromProgID("Excel.Application"); object obj = Activator.CreateInstance(t);
//パターン3 Type t = Type.GetTypeFromProgID("Excel.Application.11"); object obj = Activator.CreateInstance(t);
上記3パターン共に同様のエラーが発生しました。
【DCOMの構成】
Microsoft Excel アプリケーションのプロパティで 認証 − 規定 場所 − このコンピュータでアプリケーションを実行する セキュリティ 起動とアクティブ化の許可 カスタマイズ ASP.NET インターネットゲストアカウント Everyone
アクセス許可 カスタマイズ ASP.NET インターネットゲストアカウント Everyone 構成のアクセス許可 ASP.NET インターネットゲストアカウント Everyone 上記全てフルコントロール ID − 対話ユーザ
【フォルダセキュリティ】
MicrosoftOfficeフォルダに対し、 以下のユーザをフルコントロールで追加 Office11のフォルダも同様 ASP.NET インターネットゲストアカウント Everyone Network Service
分類:[ASP.NET]
【解決したい問題】
VS2008で、クライアントのリクエストからサーバのExcel(Office2003)を起動して印刷を行いたいと思っています。
IISのバージョンは5.1です。
以下のようなエラーが発生し、処理が一向に進みません。
何かわかりましたら教えていただけるとありがたいです。
【エラー状況】
Excelを起動しようとした場合、タスクマネージャではExcelを起動していますが、以下のメッセージが表示され起動できた事を認識しません。
CLSID {00024500-0000-0000-C000-000000000046} を含むコンポーネントの COM クラス ファクトリを取得中に、次のエラーが発生しました: 80070005。
【前提】
・このPCには以前Office2007がインストールされており、現在はOffice2007はアンイストールされ、Office2003をインストールしています。
・本来VS2008の.netのバージョンは2.0ではありませんが、VS2003から変換を繰り返してVS2008まで使用してきたもので、3.5ではコンパイルエラーが発生する事もあり、今回も.netのバージョンは2.0で使用します。
(VS2005で今回悩んでいる同様の処理は行えました。)
・ただのプロジェクト扱いでは、Excelは正常に起動し処理を行えます。
ソリューションになるとエラーが発生します。
・偽装ユーザはシステムの都合上使用できません。
【ソース】
3パターン試してみました。
using System;
using System.Web;
using System.Reflection; // For Missing.Value and BindingFlags
using System.Runtime.InteropServices; // For COMException
using Excel = Microsoft.Office.Interop.Excel;
//パターン1
Excel.Application app; //EXCEL
app = new Excel.Application();
//パターン2
Type t = Type.GetTypeFromProgID("Excel.Application");
object obj = Activator.CreateInstance(t);
//パターン3
Type t = Type.GetTypeFromProgID("Excel.Application.11");
object obj = Activator.CreateInstance(t);
上記3パターン共に同様のエラーが発生しました。
【DCOMの構成】
Microsoft Excel アプリケーションのプロパティで
認証 − 規定
場所 − このコンピュータでアプリケーションを実行する
セキュリティ
起動とアクティブ化の許可
カスタマイズ
ASP.NET
インターネットゲストアカウント
Everyone
アクセス許可
カスタマイズ
ASP.NET
インターネットゲストアカウント
Everyone
構成のアクセス許可
ASP.NET
インターネットゲストアカウント
Everyone
上記全てフルコントロール
ID − 対話ユーザ
【フォルダセキュリティ】
MicrosoftOfficeフォルダに対し、
以下のユーザをフルコントロールで追加
Office11のフォルダも同様
ASP.NET
インターネットゲストアカウント
Everyone
Network Service