Workbook_Open 自動的に閉じる
イベントマクロ 13回
指定時間が経過したら自動的にブックを閉じる
今回のイベントマクロは、Workbook_Open イベントを使って、開いたブックを、指定時間が経過したら閉じるといものです。
使うメソッドはApplicationオブジェクトのOnTimeメソッドです。
これは自分だけが使うブックで練習用に作ってみてください。
OnTimeメソッド
OnTimeメソッドは、Applicationのメソッドです。
OnTimeメソッドの構文
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
OnTimeメソッドの引数
引数名 | 説明 |
---|---|
EarliestTime | プロシージャを実行する時刻を指定します。 |
Procedure | 実行するプロシージャ名を指定します。 |
LatestTime | (省略可能)プロシージャを実行できる最も遅い時刻を指定します。 たとえば 、LatestTime が EarliestTime + 30 に設定され、Microsoft Excel が Ready、Copy、Cut、または Findモードに設定されていない場合、別のプロシージャが実行されているため、Excel は最初のプロシージャが完了するまで 30 秒待機します。 30 Excel準備完了モードではない場合、プロシージャは実行されません。 この引数を省略すると、Excelが実行されるまで待機します。 |
Schedule | (省略可能)新しい OnTime プロシージャを設定するには、True を指定。 直前のプロシージャの設定を解除するには、False を指定します。既定値は True です. |
時間が経過したら自動的にブックを閉じる
1. 時間を指定するために、ブックを開いた時の時間をNowで取得します。それに指定した時間をプラスした時間、それが指定時間となります。
Private Sub Workbook_Open() Application.OnTime Now + TimeValue("00:00:30"), _ "CloseBook", Now + TimeValue("00:01:00") End Sub
第1引数には Now + TimeValue("00:00:30") と指定し、第二引数で実行するプロシージャ名を指定しています。CloseBookという標準モジュールに書いたマクロです。
さらに第3引数に、実行できる最も遅い時間として、Now + TimeValue("00:01:00")と指定しています。第
4引数は省略しています。
2. そしてこれは時間になったら実行するマクロです。標準モジュールに記述しておきます。
Sub CloseBook() If ThisWorkbook.Saved = False Then _ ThisWorkbook.Save ThisWorkbook.Close End Sub
時間が経過したら休憩を促す
3. 夢中になって仕事をしすぎてしまうことのないように、1時間経過したら、休憩を促すようにするマクロにしてみます。
Private Sub Workbook_Open() Application.OnTime Now + TimeValue("01:00:00"), _ "Takeabreak", Now + TimeValue("01:02:00") End Sub
Sub Takeabreak() MsgBox "もう1時間も働いています。休憩の時間です。" End Sub
つぎはブックが閉じる前に処理を実行するBeforeCloseイベン卜を紹介します。