次の方法で共有


WinServer2008上のIIS7+MSOffice2007 ExcelのCOMコンポーネント、エラー HRESULT からの例外です : 0x800A03EC

質問

2009年2月13日金曜日 10:06

環境:Windows Web Server 2008 X64, IIS7, MS Office2007
エクセルファイルを開くとき、エラーが出ます。
コード:

If (Not (excelApplication) Is Nothing) Then 
            CloseExcelApplication()  
        End If 
        'ファイルは存在するかどうかを判断します  
        If (excelOpenFileName = "") Then 
            Throw New Exception("ファイルを選択してください")  
        End If 
        If Not File.Exists(excelOpenFileName) Then 
            Throw New Exception((excelOpenFileName + "このファイルは存在しません"))  
        End If 
        Try 
            excelApplication = New Excel.ApplicationClass  
            excelWorkBooks = excelApplication.Workbooks  
            excelWorkBook = CType(excelWorkBooks.Open(excelOpenFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value), Excel.Workbook)  
            excelWorkSheet = CType(excelWorkBook.Worksheets(excelActiveWorkSheetIndex), Excel.Worksheet)  
            excelApplication.Visible = False 
            Return True 
        Catch e As Exception  
            CloseExcelApplication()  
            Return False 
        End Try 

誰かこの問題を解決しましたか、解決方法をありましたら、教えてください
よろしくお願いします

すべての返信 (6)

2009年2月13日金曜日 11:16 ✅回答済み

 別のアプローチとしてですが、あらかじめExcel 2007でひな形を作成してXLSX形式で保存、後はOffice Open XML形式のドキュメントとしてプログラムで操作してはどうでしょうか?(もちろん、運用にもよると思いますが)

 Office Open XML形式を操作するためのクラスは.NET Framework 3.0からサポートされ、操作するのはあくまでもOffice Open XML形式のドキュメントなので、一番ありがたいのはサーバーにExcel等のOffice製品をインストールする必要がなくなるという事が挙げられます。
(よくあるのが、サーバーにExcelのプロセスが残ったままとなる場合がありますが、この場合だとその心配がなくなります)

「MSDN:[方法] Office Open XML 形式のドキュメントを操作する」が参考になると思います。
http://msdn.microsoft.com/ja-jp/library/aa982683.aspx

 欠点としては、ファイルフォーマットがExcel 2007形式なので、Excel 2003ではアドオンが必要となるのと、Excel 2000以前では使用できなくなります。

# それでもサーバーにOffice製品をインストールしなくても済むようになるのは大きいかと。


2009年2月13日金曜日 13:09 ✅回答済み

調べてみましたが、64ビットOS上のIIS7でCOMのオブジェクトとしてExcelを動かすの難しそうですね。
(お客様の方で、アドオンをインストールしてもらえればいいんですけど、そうもいかないですよね)

別の方法として(検証していないのでアレですが)Share Point Serverに含まれるExcel Servicesは使えないでしょうか?
(ただしOS付属のShare Pointではなく、製品としてのShare Point Serverが必要、というのが痛いですけど)

これだと動作実績、というかWindows Server 2008(x64)でShare Point Serverを動かして問題は発生していないので、動くとは思います。

# 自分も時間が空いたら検証してみないと。
# あと、Excel Servicesだけを販売してくれないかなぁ。


2009年2月13日金曜日 11:29

ありがとうございます
お客の要求は「生成できたファイルがExcel 2003でもアクセスできる」、だから、その方法はだめになります。


2009年2月26日木曜日 8:06

 こんにちは。中川俊輔です。

CatTailさん、回答ありがとうございます。

wenmingweiさん、フォーラムのご利用ありがとうございます。
有用な情報と思われたため、CatTailさんの回答へ回答マークをつけさせていただきました。

今後ともフォーラムをよろしくお願いします。
それでは!マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔


2009年4月4日土曜日 3:46

始めまして、上海博理数碼科技有限公司の盧健健です。
情報が遅いかもしれないですが、私が似ている問題に会いました。
下記の手順で解決しました。
1、コマンドラインにdcomcnfgを実行
2、Microsoft Excel アプリケーションの「プロパティ」
3、「起動とアクティブ化のアクセス許可」「アクセス許可」「構成のアクセス許可」
にASPNETユーザーを入れて、また、「フルコントロール」
4、ID タブに 「起動したユーザ」に設定

参考になれば嬉しいです。

すみません。2003ServerではOKですが、2008Serverではまただめです。
2008Serverで出来る方法があれば、教えてほしいですね。


2009年6月25日木曜日 4:54

このスレッドに私が見つけた解決策を記入しているので、

是非見てみて下さい。

http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91

 

概要はとしては、以下のフォルダを作成するだけでOKです。

 

・Windows 2008 Server x64 の場合

  C:\Windows\SysWOW64\config\systemprofile\Desktop

・Windows 2008 Server x86 の場合

  C:\Windows\System32\config\systemprofile\Desktop

これだけで、私の環境ではOfficeのオートメーションが使えるようになっています。
 

もしよろしければ、試してみて下さい。