見出し画像

【VBS】○秒間だけキャンセル操作可能なダイアログを表示する

任意の秒数だけダイアログを表示するVBSコードです。
ダイアログが消える前にキャンセルボタンを押せば処理中断でき、何もしなければ勝手に消えて処理継続される条件分岐付き。
小ネタですが、載せておきます。

'〇秒間だけダイアログ表示
Dim ans
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
ans = objShell.PopUp ("〜〜の処理を実行します。中断する場合は5秒以内にキャンセルして下さい。", 5 , "確認", vbOKCancel)
Set obj
Shell = Nothing
If ans = vbCancel Then
 WScript.Quit
End If

これだけだと、単にメッセージボックスが出て消えるだけの動作です。
例えばこれに、別記事で紹介したマクロを直接起動するスクリプトを合わせるとこうなります。

'〇秒間だけダイアログ表示
Dim ans
Dim objShell
Set objShell = WScript.CreateObject("WScript.Shell")
ans = objShell.PopUp ("〜〜の処理を実行します。中断する場合は5秒以内にキャンセルして下さい。", 5 , "確認", vbOKCancel)
Set obj
Shell = Nothing
If ans = vbCancel Then
 WScript.Quit
End If

'マクロを直接起動する
Dim FilePath
FilePath = "C:\Users\Documents\Sample.xlsm"
Dim app
Set app = CreateObject("Excel.Application")
app.Visible = False
app.Workbooks.Open FilePath
app.Run "Module1.test"
app.Quit
Set app = Nothing

その後に続く処理、あるいは更に先(上記例だと、起動しようとしているVBAマクロ)が重くて処理に時間がかかるとき、最初に5秒間だけ確認ダイアログを出すことで、5秒のキャンセル猶予を与えることができます。
このように、何かの(〜〜の)処理直前に確認ダイアログを表示し、キャンセル操作を受け付けることで「やっぱ止めた」が出来ます。

使い所としては、このVBSファイルをWindowsのスタートアップフォルダに入れておく想定です。
スタートアップフォルダに入れておけば毎回PCを立上げる度にVBSが走りますし、途中で処理を止めたければ「やっぱ止めた」ができます。かつ、何もダイアログを操作しなくても時間経過で処理再開されます。
毎朝のルーティン(VBAやVBS)を起動する時に使える小技です。

タスクスケジューラで毎朝時刻指定してVBSを起動しても良いんですが、PC立上げたら直ぐにやりたい操作の場合、こちらの方が都合が良いです。

私は、VBAで書いたブラウザ自動操作(勤怠画面の自動ログイン)マクロを別に準備しておき、そのマクロを起動するためにこのスクリプトを使っています。スクリプト(VBSファイル)はスタートアップフォルダに保存しています。
 ・PC立上げ後すぐに、勤怠画面へ自動ログインしたい。
 ・毎朝PC立ち上げる時刻がバラバラ。
 ・1日に何度もPC立上げを行う。(外出先にPCを持っていくため)
この要望を満たそうとすると、こんな形が無難なのかなぁと思いました。



この記事が気に入ったらサポートをしてみませんか?