0

タスクスケジューラーもどきスクリプトのお裾分けです。

それなりに採り入れやすいシンプルさで、充分実用的に仕上がってます。
「こうすればよりスマートだよ」があれば教えてください。
派生案とか便乗もウェルカムです。

 

機能

  • 指定時間に指定アクションを実行

 

きっかけのスレッド

https://winactor.com/questions/?q=New!%20WinActroのロゴが表示されたところで止まり、起動しない

 

オススメのユーザー像

  • タスクスケジューラーが制限されている
  • タスクスケジューラーがじゃじゃ馬で乗りこなせない
  • タスクスケジューラーからRPAを実行させている

 

タスクスケジューラーもどきのスクリプト

' 時間指定
myTime1 = "15:00"
myTime2 = "15:01"

' 1つめの時間に
Do While CDate(myTime1) > Time
Loop
MsgBox myTime1 ' 1つめのアクションを実行(目的のアクションに差し替える)
MsgBox myTime1 ' 2つめのアクション

' 2つ目の時間
Do While CDate(myTime2) > Time
Loop
MsgBox myTime2

 

スクリプト実行方法のバリエーション

 

リファレンス

https://www.google.com/search?q=VBS+時間指定

 

アクション部分のスクリプト例

【VBS】WshShell.Runによる外部プログラムの実行のバリエーションと注意事項 : GINPRO / SQLの窓と銀プログラマ
https://ginpro.winofsql.jp/article/267579611.html

https://www.google.com/search?q=VBS+アプリ+Run

 

作成後記

  • ▲ 1指定時間のアクションにつきミニマムでも4行消費すること
  • Excel VBAのOnTimeのように、1指定時間のアクションにつき1行が理想

 

 

理想により近い「1指定時間のアクションにつき1行」の模索(こちらは未テスト)

Do ' 無限ループ
  If CDate(myTime1) > Time Then アクション1
  If CDate(myTime1) < Time And CDate(myTime2) > Time Then アクション2
  If CDate(myTime2) < Time And CDate(myTime3) > Time Then アクション3
  If CDate(myTime3) < Time Then Exit Do ' ループを抜ける
Loop

 

所感

  • シンプルで初級レベル
  • 仮に想定通りに動くとして、、1行内をもっとスッキリさせたい
  • きっと猛者さんたちから、「こうしたほうがもっとスマートだね」な案や、「ここをこうする必要があるね」なツッコミが複数寄せられるはず
  • わたしも勉強させてもらう魂胆
  • よーく考えたら、、次の指定時間までアクションが繰り返されちゃうか、、
    • 次の指定時間まで待たせるには、、アクションに続けて次の指定時間まで待たせるコードを添える?と、アクションの引数扱いになっちゃうか、、
    • やっぱり本家のもどきのほうに軍配が上がるか、、
    • あるいは、このへんの併用を検討することで光が見えてくるか
      https://www.google.com/search?q=VBS+Popup+時間+閉じる|消える
anothersolution 新しいコメントを投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。