Excelのプロセスが残ってしまう – プログラミング – Home

Excelのプロセスが残ってしまう
 
通知
すべてクリア

Excelのプロセスが残ってしまう


Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
Topic starter  

初めて書き込ませていただきます。
VC++初心者のBANと申します。

VC++でExcelを出力する以下のようなプログラムを作成しました。

//Excelの起動
 pXL.CreateInstance(LExcel.Application);
 pXL->Visible = TRUE;
 WorkbooksPtr pBooks = pXL->Workbooks;
//雛形のエクセルをオープンする
_WorkbookPtr pBookH = pBooks->Open(C:\\aaa.xls);
//1シート目をコピーする。
_WorksheetPtr pSheetsH = pBookH->Worksheets->Item[COleVariant((short)1)];
//WorkBookを追加する
_WorkbookPtr pBook = pBooks->Add((long)xlWorksheet);
//1シート目の後ろにコピーする
_WorksheetPtr pSheets = pBook->Worksheets->Item[COleVariant((short)1)];
pDisp.vt = VT_DISPATCH;
pDisp.pdispVal = pSheets;
//シートのコピー
pSheetsH->Copy(vtMissing, pDisp);

pBook->SaveAs(c:\\temp\\bbb.xls, (long)xlExcel9795, vtMissing, vtMissing,
vtMissing, vtMissing, xlExclusive);
//Excelを閉じる
pXL->Quit();
pDisp.vt = VT_EMPTY;

pXL->Quit()しているのにも関わらず、Excelのプロセスが残ってしまうことがありま
す。
そこで、pXL->Quit後、Excelのプロセスが残っていたら、Excelを強制終了しようと考え
ていますが、方法が解りません。
どなたが、ご存知の方がいらっしゃれば、ご教授願います。
開発環境は VC++6.0 Excel 2000です。
よろしくお願いいたします。


引用
トピックタグ
dairygoods
 dairygoods
(@dairygoods)
ゲスト
結合: 23年前
投稿: 1421
 

> そこで、pXL->Quit後、Excelのプロセスが残っていたら、Excelを強制終了しようと考え
> ていますが、方法が解りません。

その前に、開きっぱなしの Wookbook を閉じるなど、
正常に終了させる方法を探ってみてはいかがでしょう。

#ExcelはOLEサーバーとして動作しますので、
#アプリ(UI)の終了=プロセス終了とはならなかったような
#記憶があります。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
Topic starter  

dairygoodsさんレスありがとうござます。

>その前に、開きっぱなしの Wookbook を閉じるなど、
>正常に終了させる方法を探ってみてはいかがでしょう。
書き忘れていましたが、pBooks->Close()をpXL->Quit()の前に実行しています。
処理を見直しますが、Excelの強制終了方法がお解りのかたがいらっしゃいましたらご教
授願います。


返信引用
Ban
 Ban
(@ban)
Prominent Member
結合: 5年前
投稿: 776
Topic starter  

追記です。
現在は、Excelプロセスが残ってしまう現象は発生していませんが
発生しなくなった理由が解らす、またいつ発生するか不安ですので
強制終了することを思いつきました。
皆様方の中で私と同じような現象を経験した方がいらっしゃれば
対策方法をご教授願います。


返信引用
FAY
 FAY
(@FAY)
ゲスト
結合: 22年前
投稿: 14
 

強制終了をするよりも
Exelのメインウィンドウを取得して
WM_CLOSEを投げてあげたらどうでしょう。

少なくともTerminateProcessするよりは
いいとおもいます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました