VBAの「Sendkeys」についての質問です。 削除
Message#2 2014年9月9日(火)08時02分 From: 管理人 |
「SendKeysステートメント」にはNumLockキーがオフになるバグが存在します。 そちらを回避するために、Sendkeysを利用した場合は、NumLockキーをオンにする処理を入れます。 以下が処理内容ですので、ご確認ください。 Sub sample() 'IEのオブジェクトを作成する Set objIE = CreateObject("InternetExplorer.Application") 'IEを表示する objIE.Visible = True '指定したURLのページを表示する objIE.Navigate "サイトURL" '完全にページが表示されるまで待機する Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Do Until objIE.document.ReadyState = "complete" DoEvents Loop SendKeys "123" '「NumLock」キーをON Call numLockOn End Sub 【NumLockオンサブルーチン】 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キーをオンにするためにWindowsAPIの「keybd_event」を利用しています。 内容は基本形だと思ってご利用ください。 【参考サイト】 http://www.vba-ie.net/collection/iebasic2.html |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。