ASPでエクセル書き込み

このQ&Aのポイント
  • ASPでサーバのエクセル(a.xls)に書き込み後保存テストしています。
  • エラー表示はされないのですが、エクセルが更新されません。
  • どこに原因があるかお教え下さい。(クライアントの画面に”作成”は表示されます)
回答を見る
  • ベストアンサー

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

  • obone
  • お礼率51% (111/215)

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>Set Sheet = Book.Worksheets(1) Bookという変数にネタを仕込んだのは何時でしょう? objExcelBook の間違いじゃないですか? もっともReadOnlyで開いているので、Saveできませんけど・・・ Bookが未定義かNothingなので、SheetもNothingのままです。 操作はエラーになりますが、エラーハンドリングされているので、 プログラムは異常終了せず、Response.Write("作成。")は実行 されます。 2回目のOn Error Resume Nextも不自然です。前の宣言が 活きている状態なので無効ですし、If文のElse節側にあるなら、 この中でOn Error GoTo 0を実行すべきです。 また、マルチスレッド環境のWebサーバ側で特定Excelファイルを 操作するのは如何なものでしょう。(ReadOnlyならイイですけど)

obone
質問者

お礼

ありがとうございました。 慌てていたのでミスだらけでした。 申し訳ありません。

関連するQ&A

  • 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>

  • IEからクライアントのEXCELのオブジェクトを生成できない

    いつもお世話になっております。 現在、HTML内に以下ソースを記述しクライアント側の EXCELオブジェクトを取得しようとしています。 がしかし、エラー(429 ActiveXコンポーネントはオブジェクトを生成できません)がでます。 このソースをVBSファイルにして実行するとちゃんと EXCELが生成されるので、ロジックに問題はないようにおもえます。 どなたか心当りのある方、ご助言宜しくお願い致します。 *****ソース開始******** <body> <script language="VBScript"> Sub Window_OnLoad() Dim objExcelApp Dim objExcelBook On Error Resume Next Set objExcelApp = CreateObject("Excel.Application")←この時点でエラーがでる。  Set objExcelBook = objExcelApp.Workbooks.Open("http://localhost/aaaa/asptst/excelwork.xls", , True)←このEXCELマクロを実行したい *****ソース終了********

  • ASPによるEXCELファイルの操作

    宜しくお願いします。 サーバーに保管してあるEXCELテンプレートが保管してあります。 ASPを用いて、テンプレートの特定セルにデータを入力したのち そのテンプレートをクライアント側のPCに保存したいのですが可能でしょうか。 ちなみに、自分のPC内(Localhost)では、下記のプログラムでうまく動いたのですが サーバーに移すと、このプログラムのところでエラーが出ます。 初心者で見よう見まねでプログラムしているので、理屈等が理解できていないのですが どなたかアドバイスいただけると幸いです。 宜しくお願いします。 '================================================= '----- EXCEL作成 '================================================= Sub excel_save() Dim strFileName Dim ex, wb, sh, objExcelBook strFileName = "C:\Temp\報告書.xls" Set ex = Server.CreateObject("Excel.Application") ex.visible=false ex.displayalerts=false Set objExcelBook = ex.Workbooks.Open(strFileName) Set wb = ex.activeworkbook Set sh = wb.Sheets("報告書") sh.Range("I3").Value = KanriNo objExcelBook.SaveAs ("【" & KanriNo & "】報告書.xls") objExcelBook.Close False ex.Application.Quit set sh = Nothing Set wb = Nothing Set objExcelBook = Nothing Set ex = Nothing End Sub

  • ASP内で他のASPファイルを読み込む方法

    ASP内で別ファイル(A.html)を読み込みました。下記の通りです。 <% Set objA = Server.CreateObject("Scripting.FileSystemObject") Set objFile = objA.OpenTextFile("A.html", 1, False) If Err.Number > 0 Then Response.Write "Open Error" Else Do Until objFile.AtEndOfStream Response.Write objFile.ReadAll Loop End If objFile.Close %> 読み込みはできたのですが、問題なのはA.htmlにもASPの処理が書かれてて、その部分がそのままテキストとして表示されたのです。 このように表示されました↓ <% ASP %> 読み込んだ際に、A.htmlに書かれたASP処理も実行させるにはどうすればよいのでしょうか?

  • 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を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
  • ASPでエクセルの印刷定義・・・

    ASPの初心者です。皆さんご教授願います。 上手くお伝えできるかどうかも不安ですが・・・  ASPでエクセルを起動しています。  そのエクセルをA4横とか、ページヘッダとかページを指定したい(ASP上で)のですが、どのような設定、スクリプトになるんでしょうか? ちなみに・・・ Response.Clear() Response.ContentEncoding = System.Text.Encoding.GetEncoding("shift-jis") Response.ContentType = "application/vnd.ms-excel" Response.AppendHeader("Content-Disposition", "inline;filename=out_excel.xls;") Response.Write("<table>") Response.Write("<tr>") : : Response.Write("</tr>") Response.Write("</table>") Response.End() でエクセルを表示しています。 (Win2K,asp.net) 上手くお伝えできなかったら、すみません。 よろしくお願いします。

  • インクルードしたファイルの関数を使用する

    お世話になっております。カナと申します。 宜しくお願いいたします。 ・windowsXP ・Vbscript ・IIS5.0 インクルードしたaspファイルに、関数があるのですが、 それを実行し戻り値を取得して呼び出し元の関数に戻った際に、 エラー「この変数は宣言されていません。」が出てしまいます。 以下ソースです。 '~~~~~TEST_1.asp~~~~~~~~~ <%@ LANGUAGE="VBScript" %> <% option explicit %> <!-- #include file="TEST_2.asp" --> <% call TEST_1() %> <% public function TEST_1(Data) Dim Data On Error Resume Next Data=27 Call TEST_2(Data) Response.Write(Data)%><br><%      '↑きちんと30が取得できます Response.Write(Err内容:" & Err.Description)%><br><% '↑ここでエラーの確認をしています。      '「この変数は宣言されていません。」になります。 End Function %> ~~~~~TEST_2.asp~~~~~~~~~ <% Public Sub TEST_2(ByRef Data) On Error Resume Next Response.Write("Data)%><br><%      '↑27が表示されます     Data=Data+3 End Sub %> ------------------------------------------------------- 以上です。 callで関数を呼んで、実行結果は正しく取得できるのですが、戻ってきたときにエラーになるので、この先のコードを書いていったときにエラー処理等に問題が出てしまいます。 もっと長いソースを書いているときも同様のエラーが出るので、ファイルのインクルードの仕方か関数の呼び出し方など、根本的になにか問題があるのだと思うのですが・・・。 何かおかしい点があるのでしょうか? 大変困っています。 申し訳ありませんが、どなたかご教授ください。

  • AccessでExcelのプロセスが消せない

    Access2007を使用してExcelへ出力するプログラムを作っております。 On Error時にExcelのプロセスが消せなくて困っています。 正常に終了した場合は消えているのですが、On Error時には消せないと言うのはなぜでしょう? どなたか教えてください! ロジックは以下の通りです。 Dim xls, Book, newSheet As Object Private Sub cmd02_Click() On Error GoTo Err_cmd02_Click '処理A '処理B '処理C 'ExcelFile出力 Call ExcelOut Exit_cmd02_Click: Exit Sub Err_cmd02_Click: MsgBox ERR.Description 'ExcelがOpenしているかの判断 If bolExcelFlag = True Then 'Open中だったらClose Set newSheet = Nothing Book.Close SaveChanges:=False Set Book = Nothing xls.Quit Set xls = Nothing End If Resume Exit_cmd02_Click End Sub Private Sub ExcelOut() 'Excelオブジェクト作成 Set xls = CreateObject("Excel.Application") '新しいブックを追加 Set Book = xls.Workbooks.Add '新しいシートを追加 Set newSheet = Book.Worksheets(1) 'ExcelFlagをOn bolExcelFlag = True 'ヘッダー出力 Call HeaderOut 'ExcelFile編集メイン Call MainOut '最終のSub Total編集 Call BreakOut 'フッター出力 Call FooterOut 'ファイルの保存 Book.SaveAs (strOutFileName) '各オブジェクトのClose Book.Close xls.Quit Set newSheet = Nothing Set Book = Nothing Set xls = Nothing 'ExcelFlagをOff bolExcelFlag = False End Sub 以上、よろしくお願いいたします。

  • サーバーからクライアントのMACアドレスを取得

    ASPを使用して、サーバーからクライアント側の ネット情報などを取得したいのですが、できるのでしょうか? 今現在WMIを使用してクライアントからサーバーのMACアドレスを 取得できているのですが、逆の事もできるのではと考えました。 <HTML> <HEAD> <TITLE>MACアドレスの表示</TITLE> </HEAD> <BODY> <Form method="post" name="form1"> <input type="hidden" name="h_MACaddress" value="<%= MACA %>"> <% Dim MACA ConnectString = "winmgmts:{impersonationLevel=impersonate}!root\cimv2" Query = "SELECT MACaddress " Query = Query & " FROM Win32_NetworkAdapterConfiguration" Query = Query & " WHERE IPEnabled=TRUE" On Error Resume Next Set IPConfigSet = GetObject( ConnectString ).ExecQuery( Query ) if Err <> 0 Then 'エラー発生表示 if Err.Number = -2147217405 then Response.Write "Error 0x80041003: Access Denied: " Response.Write "Check permissions and file security for this ASP file." Response.Write "<BR>" else Response.Write "エラー説明: " Response.Write Err.Description Response.Write "エラー番号: " Response.Write Err.Number Response.Write "<BR>" end if end if For each IPConfig in IPConfigSet 'MACアドレス取得処理 Response.Write("MACADDRESS: ") Response.Write(IPConfig.MACaddress & "<br>") MACA = IPConfig.MACaddress Next 'Response.write("aaa:" & MACA & "<BR>") 'MACアドレスの変数 Response.Write "<BR>" if Err <> 0 Then 'エラー発生表示 Response.Write "エラー説明: " Response.Write Err.Description Response.Write "エラー番号: " Response.Write Err.Number Response.Write "<BR>" end if %> </BODY> </HTML> プログラムはこのようなものを使用しております。 できるできないだけでも知りたいので、 分かる方いらっしゃいましたら教えていただけますでしょうか? 宜しく御願い致します。

専門家に質問してみよう