電子書籍の厳選無料作品が豊富!

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

以上、解決策があればよろしくお願いいたします。

A 回答 (1件)

どういう仕組みなのか質問の内容だけでは不明ですが、Excelのプロセスが残る理由はなんとなく見えます



objExcelApp.Quit
Set objExcelApp = Nothing
エラー時にも入れてください

この回答への補足

回答ありがとうございます。
しかしエラー処理に入れてもエラー処理の方には入ってくれず、延々と読込中の状態のままです。仕組みとしてはWebシステムであり、入力された台帳から集計する項目(年月等の情報)を選択して絞り込み、雛形のxlsファイルにデータベースから絞り込んだ値を埋め込んで最終的にファイル出力する仕組となっています。
投稿している間も引き続き調べておりましたが、aspからのexcelの呼び出しはmicrosoftでは推奨されていないようでした。
http://support.microsoft.com/kb/257757/ja
Open XMLというものを使用すればいいのかなと思いましたが、フォーマットがxlsですので対象外のようです。
IISからのタイムアウト等を設定しても読み込み中の状態は解消されないので何とかゾンビ状態は回避したいです。ちなみに同時実行時以外はしっかりプロセスも終了しメモリも解放されます。1~2秒の間が入った場合も正常でした。

補足日時:2014/03/23 17:53
    • good
    • 0
この回答へのお礼

すいません自己解決しました。
並列処理はexcelを仕様する方法では無理そうなので、排他処理で行う事にしました。

Dim objExcelApp
Err.Clear

'アプリケーションのロック
Application.Lock

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
  'ロック解除
  Application.Unlock
Else
  (…処理)
  objExcelApp.Quit
  Set objExcelApp = Nothing
  'ロック解除
  Application.Unlock
End If

お礼日時:2014/03/23 21:39

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