Excelマクロを5分ごとに自動実行する方法|Application.OnTimeで定期実行するVBAコードを解説

Excel

Excelで作成したマクロを一定間隔で自動的に実行したい場合、VBAの「Application.OnTime」を使用すると、指定した時間ごとにマクロを動かすことができます。

例えば、5分ごとにデータを更新したい場合や、定期的に集計処理を行いたい場合などに便利です。この記事では、Excelマクロを5分間隔で繰り返し実行する基本的なコードや停止方法、注意点について解説します。

Excelマクロを定期実行するにはApplication.OnTimeを使う

Excel VBAには、指定した時刻にマクロを実行する「Application.OnTime」という機能があります。この機能を使うことで、タイマーのようにマクロを自動実行できます。

単純にマクロを5分ごとに動かしたい場合は、実行したい処理を記述したマクロを用意し、そのマクロをApplication.OnTimeで再度予約する仕組みにします。

例えば、株価や売上データを定期的に取得する処理、作業中のファイルを定期保存する処理などにも利用できます。

5分ごとにマクロを実行する基本コード

まず、5分ごとに実行したい処理を作成します。以下の例では「実行する処理」という名前のマクロを5分ごとに呼び出します。

Dim 次回実行 As Date

Sub 自動実行開始()
    次回実行 = Now + TimeValue("00:05:00")
    Application.OnTime 次回実行, "実行する処理"
End Sub

Sub 実行する処理()
    'ここに実行したい処理を書く
    MsgBox "5分ごとに実行されました"

    '次回の実行を予約
    自動実行開始
End Sub

このコードでは、「自動実行開始」を実行すると5分後に「実行する処理」が動き、その処理が終了すると再び5分後の実行を予約します。

そのため、一度開始すればExcelを閉じるまで繰り返し処理できます。

実際の処理を組み込む場合の例

例えば、5分ごとに指定したセルへ現在時刻を記録したい場合は、以下のように変更できます。

Dim 次回実行 As Date

Sub 自動実行開始()
    次回実行 = Now + TimeValue("00:05:00")
    Application.OnTime 次回実行, "時刻記録"
End Sub

Sub 時刻記録()
    Worksheets("Sheet1").Range("A1").Value = Now
    自動実行開始
End Sub

この例では、5分ごとにSheet1のA1セルへ実行時刻を書き込みます。データ監視や定期更新などの処理へ応用できます。

マクロの自動実行を停止する方法

Application.OnTimeで予約した処理は、停止用のコードを用意して解除できます。

Sub 自動実行停止()
    On Error Resume Next
    Application.OnTime 次回実行, "実行する処理", , False
End Sub

停止処理を実行すると、予約されていた次回のマクロ実行がキャンセルされます。

Excelを閉じる前に停止処理を実行するようにしておくと、意図しないタイミングでマクロが動くことを防げます。

5分ごとの自動実行で注意するポイント

Application.OnTimeは便利な機能ですが、いくつか注意点があります。

  • Excelファイルを閉じている間はマクロは実行されない
  • 処理中に次の実行時間になると動作が遅れる場合がある
  • マクロの名前は正確に指定する必要がある
  • 無限ループ状態にならないよう停止方法を用意する

例えば、5分ごとの処理で大量のデータ更新を行う場合、処理時間が5分以上かかると次回実行と重なる可能性があります。その場合は処理時間を考慮して間隔を設定する必要があります。

また、定期実行するマクロは標準モジュールに記述し、マクロ名を文字列で指定できる状態にしておくことが重要です。

パソコン起動後に自動で開始したい場合

Excelを開いた時点で自動的にタイマーを開始したい場合は、Workbook_Openイベントを利用できます。

Private Sub Workbook_Open()
    自動実行開始
End Sub

このコードをThisWorkbookに記述すると、Excelファイルを開いた時に自動実行開始マクロが呼び出されます。

例えば、毎日開く管理表で定期的な集計処理を行いたい場合などに便利です。

まとめ|ExcelマクロはApplication.OnTimeで5分ごとに自動実行できる

Excel VBAでマクロを5分ごとに実行したい場合は、Application.OnTimeを使う方法が一般的です。

実行したい処理を作成し、その処理の最後で次回実行を予約することで、一定間隔で繰り返し動作させることができます。

ただし、Excelを閉じるとタイマーは停止するため、常時動作が必要な場合は運用方法も考える必要があります。停止用マクロも準備し、安全に利用することで、データ更新や定期処理を効率化できます。

コメント

タイトルとURLをコピーしました