2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« マイコンピュータゾーンになる汎用のURLになりそうなもの | トップページ | ショートカットに相対パスを指定する。 »

2008年1月 7日 (月)

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になりそうなもの | トップページ | ショートカットに相対パスを指定する。 »