Excel VBA 効果的にコード実行を一時停止|待機制御Sleepの活用法と実例

 

Excel VBAの処理で、コードの実行を一時停止させる。Sleepの効果的な活用法や実践例を解説していきます。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!

👇実務で“そのまま使える”テンプレ付きで、コピペするだけ
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き

 

Excel VBA Sleepの基本的な使用方法

Sleepはファイルの処理や繰り返し処理の際に、一定時間の間隔を空けたい場合に使用します。たとえば、特定の処理後に一定時間待機して次の処理を開始する際に有用です。

たとえば、基幹システムからCSVファイルが吐き出されたのちに、ExcelVBAでCSVをExcelに読み込む際に利用する。

CSVファイルが作成されていたら、そのままExcelに読み込みするが、CSVファイルが未作成の場合は一定時間待って再処理するなどで利用できます。

 

Excel VBAにSleep関数は標準で備わっていないので、Windows APIを使ってSleepができます。

 

Excel VBA Sleepの使用例

 

自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。

👉無料ExcelVBAベーシック選択問題138問

 

#If VBA7 Then ' 64ビット版のExcelの場合
    Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else ' 32ビット版のExcelの場合
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

Sub ExampleSleep()
    ' Sleep関数を使って5000ミリ秒(5秒間)待機する例
    Sleep 5000
    MsgBox "5秒経過しました!"
End Sub

 

Windows APIのSleepをVBAで呼び出し、5000ミリ秒(5秒間)プログラムの実行を一時停止させ、その後にメッセージボックスを表示します。

 

Excel VBA Sleepを使うときの留意点

Windows APIは、Windowsのバージョンやビット数(32ビットまたは64ビット)によって動作が異なることがあります。適切なバージョンやビット数に対応した宣言が必要です。

また、Sleepは一時停止中にExcelは応答しません。

 

Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。

👉無料ExcelVBAベーシック選択問題138問