こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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とかいう方法を使うらしいでんすが使い方がよくわかりません

投稿日時 - 2009-04-23 11:54:37

QNo.4902400

すぐに回答ほしいです

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

こんにちは。

最初に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
を選んで、タスクの設定を適当にしてください。

投稿日時 - 2009-04-23 12:53:14

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.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を実行し、その時刻を表示する例。

投稿日時 - 2009-04-23 13:31:04

ANo.1

Windowsのタスク機能を使うのが一番早いかと思います。
BOOKか通常は閉じているような場合は特に。

Windowsのバージョンによって多少異なりますが、
XPであれば、コントロールパネルのタスク
→スケジュールされたタスクの追加で決まった時間に
自動でプログラムを起動させることが出来ます。

投稿日時 - 2009-04-23 12:25:43