VBAでIE操作に役立つNumLockを自動オン「numLockOn」

VBAのIE(InternetExplorer)制御に便利なサブルーチンを紹介しています。

「numLockOnサブルーチン」の詳しい説明は以下よりご確認ください。
Basic認証自動ログイン「ieBasic2」
Private Declare Sub keybd_event Lib "user32" _
    (ByVal bVk As Byte, _
     ByVal bScan As Byte, _
     ByVal dwFlags As Long, _
     ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
    (pbKeyState As Byte) As Long
 
Const VK_NUMLOCK = &H90   '「NumLock」キー
Const KEYEVENTF_EXTENDEDKEY = &H1 'キーを押す
Const KEYEVENTF_KEYUP = &H2   'キーを放す

sub numLockOn()
 Dim NumLockState As Boolean
 Dim keys(0 To 255) As Byte

 GetKeyboardState keys(0)
 NumLockState = keys(VK_NUMLOCK)
       
 '「NumLock」キーがオフの場合はオンにする。
 If NumLockState <> True Then
  'キーを押す
  keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
  'キーを放す
  keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
 End If
End sub

「NumLock」キーをONにするするためにWindowsAPIの「keybd_event」を利用します。
「keybd_event」は、「SendKeysステートメント」と同様の機能で任意のキーを操作することができます。尚、「SendKeysステートメント」では操作が不能なWindowsキーの操作も可能です。
また、キーボードの状態を確認する必要があるので、「GetKeyboardState」も利用しています。