Word の OnTime

Excel のライブラリと Word のライブラリを比較していて気付いたネタでもう1つ。
 
Excel の OnTime メソッドと Word の OnTime メソッドは結構違うようです。
構文そのものも

  式.OnTime(EarliestTime, Procedure, LatestTime, Schedule)

  式.OnTime(When, Name, Tolerance)

といった具合に違うし、
Wordの方はヘルプによると、

Word では、OnTime メソッドで設定した 1 つのバックグラウンド 
タイマだけが保持されます。
既存のタイマが実行される前に別のタイマを起動すると、既存の
タイマは取り消されます。

だそうです。
 
Excelの方の引数 Schedule に相当するものがないってことは、スケジュールしたマクロが実行される前に Word 文書を閉じたらどうなるんでしょう?
Excel だったら、ゾンビのように閉じたブックが蘇ってきて、スケジュールしたマクロが実行されるのですが…
(だから、Close時に必ずスケジュールのキャンセルを入れる必要がある。)
 

Sub TestMain()
  Application.OnTime When:=Now + TimeValue("0:00:03") _
           , Name:="Macro1"
  ThisDocument.Close
End Sub

Sub Macro1()
  MsgBox "Macro1"
End Sub

↑で、試してみました。
Word の場合は、その Word 文書を閉じるとスケジュールされたマクロはキャンセルされるようです。
 
じゃ、普通にキャンセルしたい場合は?
 
ヘルプにタイマが1つしか保持されないと書いてあることから、適当な別のスケジュールを入れてやればいいようです。
このくらい適当でよさげです。

  Application.OnTime When:=Now _
           , Name:=""

 
※.Excel World の 2007年5月28日 18:14 の日記をコピーしています。
http://excel.sns.fc2.com/excel/