RSSユーザー
エクセル2016のマクロ実行のスケジュール設定についてです。
お世話になっております。
エクセル2016が開いている時のみに、エクセル2016のマクロで記録したマクロ名(Macro1)を開場日の前場、後場の1分おきに実行したいのですがどうすればよいかお教えください。今、他の処理はVBAが分からずUWSC Proを使ってスケジュール設定しているのですが、上記のようにするにはどうすればよいか分からないからです。
なお開場日の判定は、あるセルが土日祝日だと0、平日だと1に表示されるようになっています。よろしくお願いします。
2020年07月22日
大野 了
こんにちは!!
こちらは、VBAを1分おきに定期実行させたいということでよろしいでしょうかー?
記録で作られたマクロ(VBA)を動作させるには、OnTimeイベントというものを使用します。
こちらは、指定した時間にマクロを実行させることができるため、
マクロが実行される度に、1分後の時間を指定することにより、
1分おきにマクロを実行させることができます。
以前、別の方にご質問を受けました内容のアドレスで申し訳ありませんが、
URLを記述します!!
https://bbs.okasan-online.co.jp/ont/rss/board/?page=1&topic_id=22#comment_431
上記のサンプルは『MainProc』というマクロを『1秒おき』に動作させるサンプルになります。
URLのサンプルの、
MainProc → Macro1
TimeValue(""00:00:01"") → TimeValue(""00:01:00"")
と変更して頂きますと『Macro1』が『1分おき』に繰り返し動作するようになります!!
そしてRSSユーザさんの作られた、Macro1の一番最後に、
nextTime = Now + TimeValue(""00:01:00"")
Call Application.OnTime(nextTime, ""MainProc"")
の2行を追加して頂きますと、大丈夫と思います
まとめますと・・・
1.繰り返しスタート、終了のマクロを作る
Private nextTime As Variant
Public Sub StartProc()
nextTime = Now + TimeValue(""00:01:00"")
Call Application.OnTime(nextTime, ""Macro1"")
End Sub
Public Sub EndProc()
Call Application.OnTime(nextTime, ""Macro1"", , False)
End Sub
2.Macro1の一番最後に以下の2行を追加する
nextTime = Now + TimeValue(""00:01:00"")
Call Application.OnTime(nextTime, ""Macro1"")
以前頂きましたご質問を引用しているため、わかり辛い点も多いと思います。
もしわかり辛いようでしたら、最後ご連絡頂けますと幸いです!!
2020年07月22日
RSSユーザー
超初心者でしてエクセルのマクロもマウス操作とかをただ録画しただけのものです。UWSCスケジュールの簡単な式で出来ればと思ったのですが甘かったみたいです。なお大野様の文章を必死に読んでいるのですが、平日9時と12時半の繰り返しマクロスタート時刻及び平日11時30分と15時の繰り返しマクロ終了時刻はどうすればよいでしょうか。
2020年07月22日
RSSユーザー
何とかいけそうです。ありがとうございました。
2020年07月22日
大野 了
なるほどー!!
そういう事なんだったんですねー
UWSCでスケジューリングができてたので、1分おきにマクロが動かせればよいのかと思ってしまいました。
何とか行けそうとのことで、よかったです。
もしうまくいかない場合はご連絡ください!!
2020年07月22日