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/