ExcelでXX秒ごとに何かの処理をしたい時

Application.OnTimeというメソッドが使えます。初めて知りました。

やりたかったのは、

  1. XX秒毎に、オリジナルのExcelシートの一部を値コピーして別ファイルに保存
  2. 作られる別ファイル名には保存された日時を秒単位で付加して区別できるようにする
  3. スケジュール実行の間隔は簡単に変えられる

というものです。手作業だと面倒でやってられないです。

以下、マクロの中身

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("A2:M17").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A1").Select
    Sheets("Sheet2").Copy
   
    mydt = Format(Now, "yyyymmdd-hhnnss")
   
    newfn = ThisWorkbook.Path + "\" + Split(ThisWorkbook.Name, ".")(0) + "-" + mydt + ".xls"
   
    ActiveWorkbook.SaveAs Filename:= _
        newfn, FileFormat:= _
        xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
   
    Sheets("Sheet1").Select
    Range("A1").Select
   
    Schedule
End Sub

Sub Schedule()
    TargetTime = Now + TimeValue(Range("A1").Value)
    Application.OnTime TimeValue(TargetTime), "Macro1"
End Sub

A1のセルに"00:00:05"とかいれておくと、5秒ごとにMacro1が走ります。

ただ、このスケジュールを止める方法がわからなくて、今のところExcelを閉じるしか有りません。Falseを指定すると直前のをキャンセルする、らしいのですが、「'OnTime'ソメッドは失敗しました。'_Application"オブジェクト」というエラーになります。よくわからないのでExcel閉じてやってます。