• ベストアンサー

指定した時間に実行するマクロ

Sub データー削除() Sheets("Sheet2").Select Rows("3:17").Select Selection.ClearContents Range("A1").Select ActiveWorkbook.Save ActiveWorkbook.Close End Sub データーAというエクセルBOOKに 上記の単純なマクロが組み込まれています このBOOKは普段は常に閉じている状態です このBOOKがAM0:00に自動で開いて上記のマクロの実行できるように するにはどの様にしたらいいでしょうか? on timeとかいう方法を使うらしいでんすが使い方がよくわかりません

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 最初にExcelでは、終了してしまったら、OnTimeの自動実行はできません。 それと、以下のように、オートメーション・オブジェクトで作らないと、万が一にもその時間Excelを開いているときには、エラーを起こしてしまいます。 最初に以下のコードをメモ帳置いて、例えば、MYEXCEL.VBS など、拡張子を vbs にして、適当なフォルダに保存します。 Const fn = "D:\Test01.xls" On Error Resume Next Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Open fn If Err.Number = 0 Then xlApp.Visible = True End If Err.Clear On Error GoTo 0 Set xlApp = Nothing '(このコードは、絶対に全角空白は入れてはいけません。ハングします) 次に、Excelの該当するブックのThisWrobkook に以下のように入れます。 Private Sub Workbook_Open()  Call データ削除 End Sub '以下は少し内容を書き換えました。前のコードですと、誤動作の恐れがあります。 Sub データー削除() With ThisWorkbook  .Sheets("Sheet2").Select  Rows("3:17").ClearContents  Range("A1").Select  .Save  .Close End With End Sub 次に、メモ帳で登録した、MYEXCEL.VBS を [スタート]--[パフォーマンスとメインテナンス]--[タスク] スケジュールされたタスクの追加 タスクウィザードで、[次へ]で、[参照]で、 MYEXCEL.VBS を選んで、タスクの設定を適当にしてください。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

(1)OnTimeは、このコードが入っているVB,VBAのユーザープログラムが実行されていて、時間が来れば実行するという、まあ身内が寝ずの番で働いているようなものです。 TimerやOnTimeでGoogleででも照会して、適当なものを探すこと。または"指定時刻実行"などで照会。 (2)こういうものはOSにそういうことが出来る仕掛けが作ってあって(タスク管理の一分野)それを使うのがよいでしょう。 (3)上位でプログラムを実行させるUWSCのようなソフト http://blogs.yahoo.co.jp/uwsc_script/5321840.html (4)またソフトの定時実行の機能があるのを採り上げた(売りにした)既製ソフト(出来ればフリー)を使う (4)辺りの方法がよいのでは。 初心者がこの種のプログラムをやるのは無理で、VBAぐらいのプログラム勉強中のレベルでは、相当経験をつんでからやるべきことでしょう。プロ(業者)に相談するようなことだと思う。 質問の例 Sub test01() Application.OnTime Now + TimeValue("00:01:00"), "test02" End Sub Sub test02() MsgBox Now() End Sub 1分後にTest02を実行し、その時刻を表示する例。

  • xitoaki
  • ベストアンサー率35% (36/101)
回答No.1

Windowsのタスク機能を使うのが一番早いかと思います。 BOOKか通常は閉じているような場合は特に。 Windowsのバージョンによって多少異なりますが、 XPであれば、コントロールパネルのタスク →スケジュールされたタスクの追加で決まった時間に 自動でプログラムを起動させることが出来ます。

関連するQ&A