プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

Windows Vista Business 上のIISで、Excelファイルを読み込む処理を書いたのですが、Excelファイルを読み込む処理でエラーになってしまいます。
下記がソースです。

<%
On Error Resume Next

fileName = "C:\test.xls"

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
'ここでエラーが発生する
Set objWorkbook = objExcel.Workbooks.Open (fileName)
'この処理で発生したエラーの内容を出力する
Response.Write Err.Description & "<br />"
Err.Clear
objExcel.Quit

%>

これをWebサーバに保存し、実行すると、ブラウザ上で下記が出力されます(「Response.Write Err.Description & "<br />"」で出力される内容です)。

------------------------------------------------------------
ファイル 'C:\test.xls' にアクセスできません。次のいずれかの理由が考えられます。 ? ファイル名またはパスが存在しません。 ? ファイルが他のプログラムによって使用されています。 ? 保存しようとしているブックと同じ名前のブックが現在開かれています。
------------------------------------------------------------

もちろん、ファイルは存在しますし、Excelが起動していない状態でもエラーとなってしまいます。
Windows XPのIISでは、Excelの読み込みができていました。
ここで質問する前にいろいろ調べたのですが、Webサーバ上でExcelを起動すること(WordやExcelをcomオートメーションで起動すること)が、非推奨だったようですね。
そこで、知りたいことは下記の通りです。

1.VistaのIIS上でExcelを起動する術は、もはやないのか(ExcelをWebサーバ上で動作させる非推奨なプログラムを動かせなくした、など)。
2.読み込ませるExcelのファイルに適切な権限を与えればよいのか。
3.IIS7で作成したWebサイトの設定(アプリケーションプールや物理パス資格情報など)を適切な値にすればよいのか。

以上、よろしくお願い致します。

A 回答 (1件)

セキュリティ関連で C:\Test.xlsに IISのアカウントがアクセスできないのでは?



その ASPページと同じフォルダーに Test.xls を置いておいて

fileName = Server.MapPath( "./Test.xls" )
として与えてやったほうがいいのかも ・・・

この回答への補足

fileName = Server.MapPath("./test.xls")として試しましたが、同じ結果でした。
IISのアカウントについてですが、IIS7で「物理パス資格情報」の設定項目について、管理者権限を持つアカウントで試しています。それでもExcelファイルを開けませんでした。

ファイルの存在を確認するために、下記プログラムを実行しました。

<%
fileName = Server.MapPath("./test.xls")
Set objFso = Server.CreateObject("Scripting.FileSystemObject")
If objFso.FileExists(fileName) Then
Response.Write "ファイルが存在します<br />"
Else
Response.Write "ファイルが存在しません<br />"
End If
Set objFso = Nothing
%>

すると、ブラウザ上に「ファイルが存在します」と表示されました。

また、プログラムでファイルを開けることを確認するために、下記プログラムを実行しました。

<%
fileName = Server.MapPath("./test.xls")
Set objFile = objFso.OpenTextFile(fileName)
If Err.Number = 0 Then
Response.Write "ファイルオープンに成功しました<br />"
Else
Response.Write "ファイルオープンに失敗しました<br />"
End If
objFile.Close
Set objFile = Nothing
%>
すると、ブラウザ上に「ファイルオープンに成功しました」と表示されました。

補足日時:2010/01/08 09:51
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Excelのファイルを開き、そのファイルにデータを書き込みたいのですが、VistaのIISで動くASPでできないようであれば、諦めようと考えています。

お礼日時:2010/01/08 10:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!