Excelの終了を待ち合わせる。
CreateObject()したExcelプロセスの終了をどうやったら待てるか?
ExcelをCreateObject()して、ユーザがGUIで操作してからExcelを閉じたのをどうやったら検出できるか?
方法1
Excelへの参照を保持したままでは、ユーザがGUI操作でExcelを閉じても、Excelプロセスは終了しません。
でも、非表示にはなるので、Application.Visible=False で代用できます。
その後にExcelへの参照を解放すれば、Excelプロセスは終了します。
Set Application=CreateObject("Excel.Application")
Application.Visible=True
Application.UserControl=True
Do While Application.Visible=True
WScript.Sleep 1000
Loop
Set Application=Nothing
WScript.Echo "終了"
方法2
Excelへの参照を解放しておけば、ユーザがGUI操作でExcelを閉じると、Excelプロセスも終了します。
その場合は、先にExcelのプロセスIDを調べておいて、そのプロセスの終了を監視すればよいのです。
Set Application=CreateObject("Excel.Application")
Application.Visible=True
Application.UserControl=True
PID=Application.ExecuteExcel4Macro("CALL(""Kernel32"",""GetCurrentProcessId"",""J"")")
Set Application=Nothing
Do While GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessID="&PID).Count
WScript.Sleep 1000
Loop
WScript.Echo "終了"
« マイコンピュータゾーンになる汎用のURLになりそうなもの | トップページ | ショートカットに相対パスを指定する。 »