見出し画像

処理対象がなければ次回の処理を延期する【UWSC】

処理対象がなければ次回の処理を延期する

マクロを掛けっぱなしで処理を行わせたい場合に対象がなくなっても処理を繰り返すためそのままだと迷惑行為になってしまうという問題があります。そのため、対象があった場合はすぐに処理を行い、対象がない場合は次回の処理を延期したいと考えるわけです。

以下は、仕組みの説明用のサンプルになります。

//ESC を押下でキャンセル

WHILE !GETKEYSTATE(VK_ESC)
SELECT MSGBOX("処理対象がありますか?", BTN_YES OR BTN_NO)

// 「はい」が選択された場合
CASE BTN_YES
PRINT "何もしないで次へ"
//MSGBOX("「はい」が選択されました。")

// 「いいえ」
CASE BTN_NO
SLEEP(3.0)	// 指定時間
PRINT "指定時間待機後、次へ"
//MSGBOX("「いいえ」が選択されました。")
SELEND
WEND

仕組みの説明用にメッセージボックスで処理を分岐させるようにしてあります。「はい」が選択された場合はすぐに次の処理が実行され、「いいえ」が選択された場合は3秒待機した後に次の処理が実行されることを確認できると思います。

単独のマクロの場合

この仕組みを利用し「検索結果が0件」や「対象がありません」などの取得できる情報を判断、指定の時間だけ待機させるようにします。
単独のマクロでは、待機時間を60秒に設定すれば処理結果が対象なしになってからは、1周に60秒以上掛かるようになります。

複数のマクロの場合

同様の仕組みを応用して複数のマクロを1台の端末でサイクリックに処理させることが考えられます。
その場合は、すべてのマクロの処理結果をフラグで確認できるようにし、すべてのマクロの処理結果が対象なしになった場合に次回の処理を延期、それを個々のマクロの実行後に判断させるとよいと思います。

例えば、3つのマクロを1台の端末でサイクリックに処理しているケースで、個々の待機時間を20秒に設定した場合、すべてのマクロの処理結果が対象なしになってからは、1周に60秒以上掛かるようになります。

掛けっぱなしにしたかったけど上手く設定できなかった方など、この記事が皆さんのお役に立てば幸いです。

有料エリアには何も情報がありません
記事を評価してくれた方はサポートもお願いします

誰もが無料でWindows自動化を始め、生産性を向上し続けられるようにする」

ここから先は

15字

¥ 100

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