- PR -

ASP.NETで既存のEXCELファイルを実行するには?

投稿者投稿内容
キース
会議室デビュー日: 2003/02/13
投稿数: 8
投稿日時: 2003-02-18 00:36
報告が遅くなりすみません。
その後少ししかやっていないのですが進展していません。
確かにMSが推奨せずサポートしないというのには困って
しまいますね。
思った以上に難しく困ってしまいます・・・
TK
常連さん
会議室デビュー日: 2002/08/13
投稿数: 42
投稿日時: 2003-02-18 10:56
TKです。ASP.NET では試してませんが、以前ASPからサーバー側に置いたExcelのマクロを起動するという要件があり、同様の問題に悩まされた経験があります。
その時問題になったのは、

1.Office製品(Excel)をASP経由で起動すると、windows installerが立ち上がりhang upする。その際、Excelのプロセスが残り。以後、プロセスをkillしないとExcelが起動できなくなる。
2.何かしらのユーザーに選択を促すダイアログが発生すると1.と同じ現象がおきる。
3.権限の問題があると1.と同じ現象がおきる。
4.ASP側のコードの書き方によっては(コードミスでない場合も)1と同じ現象がおきる。

です。それぞれ、当時の解決方法または原因を挙げときます。ASPの場合なのであくまで参考にしてください。

1.MS Office製品の仕様により、初めて使用するときにOfficeのインストールが自動に行われる。そのために、サーバーPCに、起動ユーザー(作成したユーザかASPならIUSER_<マシーン名>)で一度ログインしOffice製品を起動しておく必要がある(できれば対象のマクロも走らせておくと良い)。

2.Excel起動時のマクロ警告メッセージが出るだけでhang upするので、セキュリティレベルを低にしておく(セキュリティ上かなりやばいので署名を使うなりなんらかの処置をお勧めします)
また、ASP内のCodeで警告メッセージを表示しないという設定をする。
(Application.DisplayAlerts=False)

3.MSのサイトに従って、Excel起動ユーザーにしかるべき権限を与える。
a.Excel起動ユーザーにExcelのアクセス&起動権限を与える(dcomcnfg.exe)
b.一時ファイルが作られるTempフォルダ、Excelのあるフォルダ等、アクセスするフォルダにしかるべき権限を与える。
c.ODBCを使用しているならレジストリを編集し、ODBC Excel Driverの実行権限を与える。(MSのサイト)

4.sample codeを挙げときます(VB)(エラーハンドリングは除いてあります)
<% Language =VBDcript CODEPAGE=932%>
<%
Option Explicit
Respense.Expires=0

Dim objExcelApp,objExcelBook,objExcelSheets,objExcelSheet
On Error Resume Next

'Create Excel Object
Set objExcelApp = Server.Create("Excel.Application")

'警告メッセージ非表示
objExcelApp.Application.DisplayAlerts = False

'Launch Excel
objExcelApp.Workbooks.Open "Excelファイルのフルパス"

'Select Workbook
Set objExcelBook = objExcelApp.ActiveWorkbook

'マクロ起動(1〜3のどれか)

'1.AUTO系マクロ
objExcelBook.RunAutoMacros(1)

'2.マクロ名で起動(AUTO系にも使える)
objExcelApp.Application.Run("マクロ(関数)名")

'3.マクロに引数がある場合
objExcelBook.Application.Run("マクロ名","引数1","引数2","引数3",・・・・)

'マクロの返り値を取得したい場合は 変数に1-3を代入すればとれる(上の例は返り値なし)

'起動したExcelファイルを非表示に(これをしないと、サーバー側でExcelが立ち上がります)
objExcelApp.Application.Visible = False

'Excelファイルの操作(セルの書き込み&読み込み、ファイルセーブなど)をここに記述


'Excel終了
objExcelApp.Quit

'Object解放
Set objExcelApp = Nothing
%>

スキルアップ/キャリアアップ(JOB@IT)