- - PR -
Excelのプロセス終了方法は??
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-15 18:06
いつも参考にさせていただいております。
さて、ヘルプを参考にエクセルを起動/終了して みたのですが、タスクマネージャにExcelのプロセス が残ったままになります。 解放方法を色々試したのですが・・・ どこか不備があるのでしょうか? (↓以下、MSヘルプを参照し実行) --------------------------------------- Sub TestExcel() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet xlApp = CType(CreateObject("Excel.Application"), Excel.Application) xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook) xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet) xlSheet.Cells(2, 2) = "This is column B row 2" xlSheet.Application.Visible = True xlSheet.SaveAs("C:\\aaa.xls") xlBook.Close() xlApp.Quit() xlSheet = Nothing xlBook = Nothing xlApp = Nothing End Sub [ メッセージ編集済み 編集者: takahon 編集日時 2003-08-15 18:56 ] | ||||
|
投稿日時: 2003-08-15 21:09
こんばんは、meiです。
処理の最後に、 System.GC.Collect() を追加するとどうでしょうか? Notingでクリアしてあげても、 ガベージコレクタが削除してくれていないと思われます。 | ||||
|
投稿日時: 2003-08-15 21:20
meiさんこんばんは。
返信有り難うございます。 引用: -------------------------------------------------------------------------------- 処理の最後に、 System.GC.Collect() を追加するとどうでしょうか? -------------------------------------------------------------------------------- 処理を追加してみたのですが・・・ 状況は変わらないようです。 CreateObjectでの「CLOSE」「Nothing」が 失敗しているんでしょうか・・・ (VB6.0の時も同じような処理で悩みました) | ||||
|
投稿日時: 2003-08-15 21:35
駄目ですか・・・ 私のところで動かした限りはタスクマネージャ上で、 Excelが消えるのが確認出来たのですが・・・ あと、 xlSheet.SaveAs("C:\\aaa.xls") は、エラーになりますが(\が一個多い)、SaveAsで失敗している訳じゃないですよね? 追記 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3343&forum=7 ↑過去ログが参考になりそうです。 [ メッセージ編集済み 編集者: mei 編集日時 2003-08-15 21:52 ] | ||||
|
投稿日時: 2003-08-18 08:52
DisposeメソッドまたはCloseメソッドがある場合は必ずコールする。 GC.Collect(2)で、完全解放させる←詳しくは川俣さんのコラム。 ↑どの記事だったか忘れました。『ガベージコレクタが走るときに参照されているメモリは世代があがり、解放されにくくなる。加えて確保時に一定量以上のメモリを確保した場合は世代が2になり、コレクトの対象とならない。』みたいなことが書いてありました。 より完全を期すなら、メインとなるクラスでエクセルをコールするのではなく、メインとなるクラスによって作成されるクラスのインスタンスでエクセルをコールし、このインスタンスを破棄する。エクセルを起動するために確保したメモリが、完全に参照されなくなるようにする。また、いきなりCreateObjectではなく、インスタンスの有無を調べ、再利用するような仕組みも考える。 私も含めて、過去に数回同じ内容のポストがあるので、検索して参照してください。 [ メッセージ編集済み 編集者: Jitta 編集日時 2003-08-18 09:15 ] | ||||
|
投稿日時: 2003-08-18 09:26
後輩が同じことで悩んでましたが、結局、
Excelのプロセスをkillしてたようでした。 | ||||
|
投稿日時: 2003-08-18 10:26
関係ないかもしれませんが、
>xlSheet.SaveAs("C:\\aaa.xls") って xlBook.SaveAs("C:\\aaa.xls") ですかね。 それと、 Application.DisplayAlerts = False 等を入れてみては? | ||||
|
投稿日時: 2003-08-18 10:30
間違った、
>Application.DisplayAlerts = False ではなく、 xlapp.Application.DisplayAlerts = False ですかね。 |
1|2|3
次のページへ»