カテゴリー
VBA 仕事

スクリーンセーバーの抑止

スクリーンセーバーを起動しないよう、エクセルVBAから定期的にキーを送信する。

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

Public Sub TimerSendKeys()
 '定期的にSCROLLLOCKキーを2回送信し、画面のスリープを抑止
 'A1セルに任意の文字列を入力されたらループ処理を終了する

Dim iTime As Integer    '秒数用カウンタ

Do
    'キーの送信は5分おき(300秒おき)
    For iTime = 1 To 300
        '1秒スリープ
        Sleep 1000
        '画面更新
        DoEvents
        '終了リクエストを確認
        If Trim(ActiveSheet.Cells(1, 1).Value) <> "" Then Exit Do
    Next
    'SCROLLLOCKキーを2回送信(無害そうなキー、設定と解除で2回)
    Application.SendKeys ("{SCROLLLOCK 2}")
Loop

'終了リクエストをクリアして終了
ActiveSheet.Cells(1, 1).Value = ""

End Sub