VBAで非同期割込処理。n秒後に自動的に閉じるMsgBox()
WScript.ShellのPopUp()の秒指定は、Excelなどでは使えません。:-(
そこで、htmlfileのwindow.setTimeout()を利用した代替方法です。
Dim wShell
Dim d
Sub aaa()
Set wShell = CreateObject("WScript.Shell")
wShell.PopUp "5秒経っても自動的に閉じません。", 5, "ユニークなタイトル"
Set d = CreateObject("htmlfile")
Set d.parentWindow.opener = Me
d.parentWindow.setTimeout "opener.proc", 5000, "VBScript"
MsgBox "5秒後に自動的にとじます。", , "ユニークなタイトル"
End Sub
Sub proc()
If wShell.AppActivate("ユニークなタイトル") Then
wShell.SendKeys "{ESC}"
d.parentWindow.setTimeout "opener.proc", 1000, "VBScript"
End If
End Sub
VBAには関数ポインタがないので、GetRef("proc")の代わりに、
オブジェクトのMeを渡して、メソッドのprocを参照させます。
« IE/HTAで非同期割込処理。n秒後に自動的に閉じるMsgBox() | トップページ | セキュリティレベルに依存して実行できないBookmarkletを実行する。 »