DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VS2008 IIS経由でC#からExcelを起動したい

環境/言語:[OS : Windows XP / 言語 : C# / .NET Framework : 2.0]
分類:[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
windows2008 IIS の組み合わせであれば下記が参考になると思います。
http://yosshi-no9.cocolog-nifty.com/blog/2010/07/2008iis-53b9-1.html

DOBON.NET | プログラミング道 | プログラミング掲示板