スポンサーリンク

【VBA-IE操作】最終手段sendKeys!キーボード操作を自動化。

IE関係
この記事は約3分で読めます。
スポンサーリンク

最終手段!キーボード操作を自動化

VBAでIEを動かすためには、
①サイトを起動
②操作したい情報のID,NAME等を確認。
③クリックや、値を入力
という順番になりますが、
どうしても操作したい要素のIDやNAMEなどが分からない場合があります。
そんな時には「タブを5回押して、エンターを押せ」というように、
VBAでキーボードの操作の代わりをしてあげることが必要になります。

キーボード操作→ SendKeys

VBAでキーボードの操作の代わりをするためには「SendKeys」を用いる必要があります。
実際のコードとしては下記のとおりです。

SendKeys "123" '1→2→3と順番に入力
SendKeys "{BS}" ’Back spaceを押す
SendKeys "^c" ’Ctrl+Cを押す(コピー)
SendKeys "{TAB} 10" ’TABを10回押す。 コマンド 回数で反復可能

microsoftの公式ページに出来ることが掲載されておりますが、
キーボードで行えることすべてできると思っていただいてokです。
キーと対応するコードは下記のとおりです。

キーコード
Shift+
Ctrl^
Alt%
{UP}
{DOWN}
{LEFT}
{RIGHT}
BackSpace{BACKSPACE}、{BS}、または {BKSP}
Del または Delete{DELETE} または {DEL}
Enter{ENTER} または ~
Break{BREAK}
CapsLock{CAPSLOCK}
終了{END}
Esc{ESC}
Help{HELP}
ホーム{HOME}
Ins または Insert{INSERT} または {INS}
NumLock{NUMLOCK}
PageDown{PGDN}
PageUp{PGUP}
PrintScreen{PRTSC}
ScrollLock{SCROLLLOCK}
Tab{TAB}
F1{F1}
F16{F16}

SendKeysでグーグル検索

ということで、グーグル検索をしてみました。
そのままキーボードの入力の命令させると、画面の表示が追い付かず、
きちんと検索することができません。
ですので、Application.Waitを用いてプログラムの処理を一時停止しております。

Sub IE_SENDKEYS()

 Application.ScreenUpdating = False
 
'IEの起動
Dim objIE As Object
 
Set objIE = GetObject("", "InternetExplorer.Application")
 
objIE.Visible = True
     
     
    objIE.Navigate "https://www.google.co.jp/"  ' このURLを任意に変更
     
    ' ページの表示完了待ち。
    While objIE.ReadyState <> 4 Or objIE.Busy = True
        DoEvents
    Wend
    
SendKeys "test"
waitTime = Now + TimeValue("0:00:01")
Application.Wait waitTime
SendKeys "{TAB}"
SendKeys "{ENTER}"

    
End Sub

最終手段 SendKeys

ということで、最終手段として、SendKeysを用いて、
キーボードの操作を勝手に行う方法を説明させてもらいました。
単純にキーボードの操作をしてもらうだけですので、
平行して他の作業などをしようとすると、間に入って邪魔することになります。
ですのであくまで最終手段として、
idやnameなどの要素を取り出して操作していくことをおすすめします。

スポンサーリンク
スポンサーリンク
IE関係
スポンサーリンク
nujonoa_blog

コメント欄

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