VistaのIISで動作するASPのExcel処理

このQ&Aのポイント
  • Windows Vista Business 上のIISで、Excelファイルを読み込む処理でエラーになってしまいます。ファイル 'C: est.xls' にアクセスできません。
  • Windows XPのIISでは、Excelの読み込みができていました。VistaのIIS上でExcelを起動することが非推奨のため、新たな方法が必要です。
  • Excelのファイルに適切な権限を与えるか、IIS7で作成したWebサイトの設定を適切な値にすれば問題が解決するかもしれません。
回答を見る
  • ベストアンサー

VistaのIISで動作するASPのExcel処理

お世話になります。 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サイトの設定(アプリケーションプールや物理パス資格情報など)を適切な値にすればよいのか。 以上、よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

セキュリティ関連で C:\Test.xlsに IISのアカウントがアクセスできないのでは? その ASPページと同じフォルダーに Test.xls を置いておいて fileName = Server.MapPath( "./Test.xls" ) として与えてやったほうがいいのかも ・・・

velvet-rope
質問者

お礼

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

velvet-rope
質問者

補足

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 %> すると、ブラウザ上に「ファイルオープンに成功しました」と表示されました。

関連するQ&A

  • ASPでExcelファイルを開く場合

    ASPでExcelファイルを開く場合WEBでいろいろ検索すると Set ObjExcel = Server.CreateObject("Excel.Application") ObjExcel.Workbooks.Open"****.xls" で開く方法が記載されていたので ためしているのいですが Set ObjExcel = Server.CreateObject("Excel.Application") でエラーが出てしまいます。 解決する方法はありますでしょうか。 環境:Windows XP,IIS,Office 2003 **************************************************** エラー タイプ Server オブジェクト, ASP 0178 (0x80070005) 許可を確認中に Server.CreateObject の呼び出しに失敗しました。このオブジェクトへのアクセスは拒否されます。 *****************************************************

  • ASPでエクセル書き込み

    ASPでサーバのエクセル(a.xls)に書き込み後保存テストしています。 エラー表示はされないのですが、 エクセルが更新されません。 どこに原因があるかお教え下さい。 (クライアントの画面に”作成”は表示されます) Prog <%@ LANGUAGE = VBSCRIPT %> <html> <body> <% On Error Resume Next Set objExcelApp = CreateObject("Excel.Application") If Err <> 0 Then ' エラー処理 response.write "Excelを起動できませんでした" response.write "エラー:" & Err.Description & "" Else On Error Resume Next '確認ダイアログ非表示 objExcelApp.DisplayAlerts = False 'エクセルのオープン Set objExcelBook = objExcelApp.Workbooks.Open("C:\Inetpub\wwwroot\test2\a.xls",,True) Set objExcelSheet = objExcelBook.Sheets(1) Set Sheet = Book.Worksheets(1) Sheet.Range("B5").Value = "Hello!" objExcelBook.Save Set objExcelSheet = Nothing objExcelBook.Close Set objExcelBook = Nothing objExcelApp.Quit Set objExcelApp = Nothing Response.Write("作成。") End If %> </body> </html> 環境 Windows XP,IIS,ASP,vbscript

  • VBSにてサーバー中のエクセルファイルを開いて閉じるだけの処理を行った

    VBSにてサーバー中のエクセルファイルを開いて閉じるだけの処理を行ったところクライアントでのテストは上手くいくのですが、サーバーに移植すると下記問題点が発生し解決できません。お教え下さい・ 1)サーバーで直接IEで開くと"検索中のページには問題があるため表示できません。"になる 2)クライアント側のIEで開くと"Microsoft VBScript 実行時エラー エラー '800a0046' ",書き込みできません。: 'CreateObject'になる 環境 サーバーwindows 2003 server クライアント windwos XP いずれもIIS ・クライアントPCのIIS環境に移植しクライアントPCのIEで開くと正常動作 プログラム <%@ LANGUAGE = VBSCRIPT %> <html> <body> <% On Error Resume Next Set objExcelApp = CreateObject("Excel.Application") If Err <> 0 Then ' エラー処理 response.write "Excelを起動できませんでした" response.write "エラー:" & Err.Description & "" Else On Error Resume Next '確認ダイアログ非表示 objExcelApp.DisplayAlerts = False 'エクセルのオープン Set objExcelBook = objExcelApp.Workbooks.Open("C:\Temp\2010.xls",,True) Set objExcelSheet = objExcelBook.Sheets(1) Set objExcelSheet = Nothing objExcelBook.Close Set objExcelBook = Nothing objExcelApp.Quit Set objExcelApp = Nothing End If %> </body> </html>

  • Accessで空のExcelファイルを出力する方法について

    下記を実行した所、C:\excel.xlsのセルA1に「1」と記述されました。 【ソース】 Private Sub コマンド0_Click() Dim objExcel As Object Set objExcel = CreateObject("Excel.Application") objExcel.Workbooks.Open FILENAME:="C:\excel.xls" objExcel.Range("A1") = 1 objExcel.Application.ActiveWorkbook.Save objExcel.Application.Quit End Sub しかし、C:\excel.xlsが存在しない状態で実行すると下記のエラーメッセージが表示されました。 【エラーメッセージ】 実行時エラー '1004' 'C:\excel.xls'が見つかりません。ファイル名およびファイルの保存場所が正しいかどうか確認してください。 上記現象を回避する為には、毎回空のExcelファイルを出力した上でセルに値を書き込めば良いと思いましたが、空のExcelファイルを出力する方法が分かりませんでした。 その為、何かアドバイスをいただける方がいらっしゃいましたら、どうかよろしくお願いします。

  • CreateObjectの同時実行時について

    Excelで入力された複数の台帳から集計する帳票を出力するシステムがあります。 質問の内容は単独で帳票を出力した場合はうまくいきますが、2台のPCから同時に 帳票作成処理を走らせたときに、片方は延々と読み込み中から止まった状態になります。 サーバのメモリを見ると、止まっているとみられるExcel.EXEが残っておりゾンビ状態になっております。 これを2台以上のPC(8台程)で同時にやるとメモリリークが発生してしまい帳票自体が作成できなくなってしまいました。その際はサーバの再起動で解決致しましたがそう何度も再起動が出来る環境ではないので何とか同時に実行出来る方法はないでしょうか。同時に出来ない場合は処理が終わるまで他のPCからの処理はウェイトをかけれればよいと考えています。 環境を以下に記します。 OS:WindowsServer2008Standard 32bit SP1 Webサーバ:IIS7 言語:asp(vbs) 帳票作成自体の処理は以下のようになっております。 Dim objExcelApp Err.Clear Set objExcelApp = Server.CreateObject("Excel.Application") If Err.number <> 0 Then   ' エラー処理   Response.write "<font color=red>"   Response.write "Excelを起動できませんでした<br>"   Response.write "エラー:" & Err.Description & "<br>"   Response.write "</font><br>" & vbCrLf   fncPrintModule = False   objExcelApp.Terminate Else   (…処理)   objExcelApp.Quit   Set objExcelApp = Nothing End If 以上、解決策があればよろしくお願いいたします。

  • 【緊急】ASPでのExcel出力方法について

    いつも参考にさせていただいております。 現在、aspで作成したweb環境を運用しております。 その中で抽出したデータをExcelに出力する処理がありますが、これを以下の方法で行っております。 ==================================== response.buffer = true response.ContentType = "application/vnd.ms-excel" response.AddHeader "content-disposition", "inline; filename=dynamic.xls"  ~ response.flush response.end ==================================== ただ、「Excel2013」であることから、出力されたExcelを開くたびにバージョン不一致の警告(ファイル形式と拡張子が一致しません)が表示されて不便です。 よって、Excel出力をExcelオブジェクトを用いた方法に変更しようと考えております。 ==================================== 'ファイルシステムオブジェクト生成 Set oFs = Server.CreateObject("Scripting.FileSystemObject") 'テンポラリファイル名取得 sFileName = Split(oFs.GetTempName, ".") 'エクセルファイル名にする sXlsName = sFileName(0) & ".xls" 'テンプレートが保存されているフォルダの物理パスを取得 sPath = oFs.GetFolder(Server.MapPath("/hogehoge/")).ParentFolder 'エクセルのオブジェクトを生成 Set oXls = Server.CreateObject("Excel.Application") 'エクセルのテンプレートファイルを開く Set oTmp = oXls.Workbooks.Open(sPath & "\temlate\template.xls")  ~ ==================================== ここからが質問です。 Excelオブジェクト作成時、エラーになってオブジェクトの作成が失敗します。 ==================================== 【オブジェクト作成を「Server.CreateObject」で行った場合】 Set oXls = Server.CreateObject("Excel.Application") ⇒ 以下のエラーが表示されます。   Server オブジェクト エラー 'ASP 0177 : 80080005'   Server.CreateObject に失敗しました 【オブジェクト作成を「CreateObject」で行った場合】 Set oXls = CreateObject("Excel.Application") ⇒ 以下のエラーが表示されます。   Microsoft VBScript 実行時エラー エラー '800a01ad'   ActiveX コンポーネントはオブジェクトを作成できません。: 'Excel.Application' ==================================== いろいろなサイトを情報をもとに対応しましたが、解決の糸口が見えない状況です。 ==================================== 【今まで試みた対応】 (1)コンポーネントサービスの「DCOMの構成」にて、「Microsoft Excel Application」の「起動とアクティブ化のアクセス許可」に「EveryOne」を追加。 (2)以下のフォルダを用意してフォルダのアクセス許可に「EveryOne」を追加。  C:\Windows\System32\config\systemprofile\Desktop  C:\Windows\SysWOW64\config\systemprofile\Desktop (3)オブジェクト作成時、「Excel.Application」を「Excel.Application.15」に変更。 ==================================== なお、開発環境は以下となります。 ==================================== 【開発環境】 OS:windows 8.1 64bit IIS:8.5 Excel:2013 その他:(1)aspを使用(.netではありません)     (2)「windows 8.1」はあくまでテスト環境です。      正常に動作することを確認後、本番環境「Win2008Server R2」に組み込む予定です。 ==================================== 私事ではありますが、スケジュール的に押し迫っております。 お忙しいところ申し訳ありませんが、解決方法のご教授をお願いいたします。 以上です。

  • VBAのキャンセル処理

    下記のVBAでファイルを出力することはできるようになったのですが、 出力するときに[キャンセル]を押しても"MsgBox :Excelファイルへの出力が完了しました。"が表示されてしまいます。 「キャンセル」した場合は、このメッセージが表示されないようにできないでしょうか? Private Sub Image_Export_Click() On Error GoTo Err_FileDialog_Click 'ファイル出力 Dim strFileName As String Dim ExpFileName As String ExpFileName = "T_master_" & Format(Now(), "yyyymmdd") strFileName = GetFileName(False, "MicrosoftExcel ブック (*.xls)|*.xls", "", ExpFileName & ".xls") If Len(strFileName) = 0 Then 'キャンセルボタンが押されたときの処理を記述 MsgBox "キャンセルが押されました。" Else DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "T_master", strFileName & ".xls", True End If MsgBox "Excelファイルへの出力が完了しました。", , "出力完了" Exit_FileDialog_Click: Exit Sub Err_FileDialog_Click: MsgBox "予期せぬエラーが発生しました" & Chr(13) & _ "エラーナンバー:" & Err.Number & Chr(13) & _ "エラー内容:" & Err.Description, vbOKOnly End Resume Exit_FileDialog_Click End Sub

  • IIS7.0 と ASP を使ってMDBファイルを参照したい

    みなさんこんばんわ。 IIS7.0 と ASP を使ってMDBファイルを参照したいのですが、 エラーが出て、ページを開くことが出来ません。 エラー表示は HTTP500内部サーバーエラー と表示されます。 エラーでとまる部分は以下コードの Point002 と Point003 の間です。 Response.Write "<p>Point001" Set Objconn = Server.CreateObject("ADODB.Connection") Response.Write "<p>Point002" Objconn.open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.Mappath(DB_Pass) Response.Write "<p>Point003" StrSQL="select * from " & Table_Name Set Objrs = Server.CreateObject("ADODB.Recordset") Response.Write "<p>Point004" Objrs.Open StrSQL, ObjConn Response.Write "<p>Point005" ODBC を使う方法もあるようですが今回は ODBC を使わないでMDBファイルを参照したいのです。 よろしくお願いします。 環境 OS→Windows Vista Ultimate Access→Access2000 IIS→IIS7.0 使用言語→VBScript

  • ASPをPHPに移植したいですが、よい方法があるでしょうか?

    ASPをPHPに移植したいですが、よい方法があるでしょうか? Set httpObj = Server.CreateObject("WinHttp.WinHttpRequest.5.1") If Err.Number <> 0 Then 'error check for http  Response.Write("エラー:" & Err.Description)  response.redirect("/ga-ko/error.asp?error=999")  response.end End If どうぞ、よろしくお願いします。

    • 締切済み
    • PHP
  • IISをASP.NET用に構成できない

    VisualStudioにてC#/ASPでWebアプリを開発しています。 アプリを VisualStudio開発サーバーでなく IISで起動しようとすると、以下のエラーメッセージが出ます。 「このサイトが正しく動作するためには、 このサイトを手動でASP.NET4.0用に構成する必要があります。 ASP.NET4.0はWebサーバーに登録されていません。 このサイトが正しく動作するためには、ASP.NET4.0用に Webサーバーを手動で構成する必要があります。」 IISのインストールで 「IISメタベースおよびIIS6構成との互換性」のチェックと アプリケーション開発機能の「ASP」と「ASP.NET」のチェックは いれています。 原因と対策をご教授ください。

専門家に質問してみよう