- ベストアンサー
VBAを時間指定で自動実行
就業時間内(9時~6時)でエクセルVBAを指定時間に自動実行させたいです。 エクセルはパソコン起動した朝に、開いておきます。(バックグラウンド) 指定時間になったらVBAを自動実行させたいのです。 指定時間は例えば、 10時11分 10時16分 10時21分 などです。最初の時間から5分間隔で実行。 こういう事はできるのでしょうか?VBAでできるのか? それ以外の方法があるのか?よくわかりません。 詳しく教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
たとえば、こんなことか。 下記は、1度testを実行すると、15秒たつとtest1を実行し、以後10秒ごとにtest2を実行するというもの。 test1もtest2も単にmsgboxを表示するだけ。 Dim gotime1, gotime2 Sub test() gotime1 = Time + TimeValue("00:00:15") gotime2 = gotime1 Application.OnTime gotime1, "test1" gotime2 = gotime2 + TimeValue("00:00:10") While gotime2 < gotime1 + TimeValue("00:01:00") Application.OnTime gotime2, "test2" gotime2 = gotime2 + TimeValue("00:00:10") Debug.Print gotime1, gotime2 Wend MsgBox "start " & Time End Sub Sub test1() MsgBox "test1 " & Time End Sub Sub test2() If Time >= gotime1 + TimeValue("00:01:00") Then MsgBox "end " & Time Else MsgBox "test2 " & Time End If End Sub
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者はVBAがどれだけの技量かわからないが、VBAでも上級の課題で、自分で色々調べて勉強してやってください。 Googleで「on time VBA」「Timer VBA」などで調べること。 ーー 時間指定で起動をかける、既製のソフトを探しては、どうでしょう。 Googleで「時間指定 起動 ソフト」「時間間隔 指定 起動 ソフト」で照会。 ーー 普通は質問のようなことしません。
お礼
勉強してやらなくては。。。と思っているのですが、 自分の正規の仕事以外の仕事で上司命令でやっているので、 勉強する時間がなかなかできません。 OKWaveは、その様な人のためにもあるサイトですよね? タスクでVBAを起動させることはすでにやっているのですが、一定間隔でどの様にやればいいのか?がよくわかりませんでした。 質問の様な事はしませんと言われましたが、業務で行っているこちらの会社は普通じゃないのでしょうか?
- nda23
- ベストアンサー率54% (777/1415)
VBAのプログラムが稼動し続けることが条件なので、「VBAの操作」で 対応するのは得策ではありません。 実行するVBAの処理ですが、どんな内容でしょう? つまり、継続性が重要かどうかです。手動で実行する場合に、毎回 エクセルを閉じても問題ないですか?以前の実行状況を変数に保持 しているとなると、閉じられませんよね。 この条件によって、解決方法も変わります。
補足
ブラウザのフォームに各支店・営業マンに指示を送付するVBAになります。エクセルのシートに記載してある文章を、一定時間にフォームへ書き込むVBAです。現在、パソコン起動時(就業開始時)に自動実行(タスクで実行しています)、それ以外は事務の人がフォームに入力して指示を出していますが、面倒なのでVBAで自動で一定時間の間隔を於いて フォームに書き込みたいと思っています。 VBAを就業時間内(9時~6時)まで自動で動かしたいので、 バックグラウンドで開いておかないといけないと思っていましたが、 エクセルを閉じても、指定時間で自動で実行できるのでしょうか?
- miyuyu
- ベストアンサー率61% (30/49)
こんにちは OnTimeメソッドとか
- dr-9
- ベストアンサー率47% (24/51)
スタート→コンパネ→タスクで時間指定の起動が出来ます。
お礼
タスクでパソコン起動時に実行させているのですが、 以後、5分とか10分ごとにVBAを起動させる方法がよくわかりませんでした。 なんとか、これでいけそうな気がします。 ありがとうございます。 今、作っているVBAはとても難しいので、また質問させてもらうかも知れませんが、その際には、よろしくお願いします。