■1-6 人間がキーボードを叩く操作はキーコード転送で再現できます
ExcelVBAでは単純な表計算以外に、色々な操作をマクロで実行することができます。その中にはWebページ
をExcelVBAを操作して、動作をコントロールすることもできますが、複雑な操作の場合は、人間がキーボード
を叩いてキーコードを送る操作をVBAで実現したいケースもあります。

キーボードから入力したのと同じ処理をマクロで行なう場合、Sendkeysステートメント、またはSendkeys
メソッドで行ないます。

構文:SendKeys string[, wait]
    string→転送するキー コードを表す文字列式を指定(キーコードは表16参照)。
    [ wait]省略可→ False:(既定値)プロシージャの終了を待たずに次に進む。
             → True:処理が終了するまで実行を一時中断します。
【表16 キーコード】
キー コード  
 
 
 
 
 
 
 
 
 
 
 
 
 
キー コード  
 
 
 
 
 
 
 
 
 
 
 
 
 
キー コード
BackSpace {BKSP} PrintScreen {PRTSC} F7 {F7}
Ctrl + Break {BREAK} ScrollLock {SCROLLLOCK} F8 {F8}
CapsLock {CAPSLOCK} Tab {TAB} F9 {F9}
Delete {DELETE} {UP} F10 {F10}
End {END} {DOWN} F11 {F11}
Enter {ENTER} {LEFT}    
Esc {ESC} {RIGHT}    
Help {HELP} F1 {F1}    
Home {HOME} F2 {F2}    
Ins または Insert {INSERT} または {INS} F3 {F3}    
NumLock {NUMLOCK} F4 {F4} Shift +
PageDown {PGDN} F5 {F5} Ctrl ^
PageUp {PGUP} F6 {F6} Alt %

・Shift キー、Ctrl キー、または Alt キーを押しながら他のキーとの組み合わせ を指定するには、通常の
  キー コードの前に、+、^、% を記述し次のコード を単独または組み合わせて()内へ記述。
・キーボード上の文字を渡すには、キーの指定にその文字を使います。
・キーを押した時表示されない文字は「キーコード表」のコードを使用します。

【注意】キー転送入力モードが「日本変換」を解除後におこなうことキーボードからの入力モードが
    「日本変換」になっていると変換された文字が転送されます(例:「a」を送る場合「あ」が送られます)。
    文字がマクロの記述内容と異なるケースが発生しないように注意してください。




(1)キーコード転送でファイルを開いた例
本例はカレントフォルダ−を対象に実行例であり、対象ファイル「Book1.xls」が指定のフォルダにあることが
前提のマクロです(対象ブックが無い場合は正常なな動作はしません)
Sub センドキー1()
ChDrive "C:"
ChDir "\tst"
 
    SendKeys "%(FO)"
    SendKeys "Book1.xls"
    SendKeys "{enter}", True
End Sub




(2)メッセージボックスを自動で閉じる例
マクロを実行中にフォーカスの行き先が不明になり、一度メッセージボックスを表示すると直ったことがありま
した。その時使ったテクニックですが、「Enter」キーを送ってからメッセージボックス表示で、MsgBox は
自動的に閉じました。
Sub センドキー2()
    SendKeys "{enter}", False
    MsgBox ""
End Sub




(3)セルへ文字入力を キーコード転送で実行した例
セルへ文字入力は普通キーボードから行いますが、その同じ操作内容をSendKeysステートメントで自動化
することができます。
(実行例は画面44参照)
画面44 セルへ記入文字を転送例


Sub センドキー3()
    Range("B1").Select
        SendKeys "B1へ記入"
    SendKeys "{right 2}"
        SendKeys "D1へ記入"
    SendKeys "{down 1}{left 2}"
        SendKeys "B2へ記入"
End Sub




(4)ショートカットキーへマクロを登録する例
ショートカットキーへマクロを登録はマニュアル操作でもできますが、その操作を自動記録した例は3-5節
「◆ショートカットキーからの実行例」に記載です。
ここではマクロでのOnKeyメソッド使用のショートカットキー登録例を紹介します

画面45ショートカットキーへマクロを登録例 


Sub センドキー4()
   Application.OnKey "^{LEFT}", "Macro1"
   Application.OnKey "^{RIGHT}", "Macro2"
 
   MsgBox "[Ctrl]+[←]でMacro1実行、[Ctrl]+[→]でMacro2実行" & Chr(10) _
   & "をキー登録しました"
End Sub
-------------------------------------------------------------
Sub センドキー4a()
    Application.OnKey "%{q}", "Macro1"
 
    MsgBox "[Alt]+[qでMacro1実行"
End Sub
-----------------------------------------------------------
Sub センドキー4b()
   Application.OnKey "^{LEFT}", ""
   Application.OnKey "^{RIGHT}", ""
 
   MsgBox "[Ctrl]+[←]でMacro1実行、[Ctrl]+[→]でMacro2実行" & Chr(10) _
   & "をキー登録を解除しました"
End Sub



【戻る】    【Top画面】   【HPへ】