ExcelマクロVBA入門 | 第121回.SendKeysメソッド | Excelマクロの基礎と応用、エクセルVBAの入門・初級・初心者向け解説



最終更新日:2017-04-05

第121回.SendKeysメソッド


キーストロークまたはキーストロークの組み合わせを、キーボードから入力したときと同様にアクティブウィンドウに渡します。

SendKeysメソッド

SendKeys string[, wait]

名前付き引数については、以下になります。

string 必ず指定します。
転送するキー コードを表す文字列式を指定します。
wait 省略可能です。
名前付き引数 string の転送によって行われる処理が終了するまで、実行を一時中断するかどうかを次に示すブール型の値で指定します。
False(既定値) プロシージャの終了を待たずに次の行に制御を移します。
True 処理が終了するまで実行を一時中断します。


キーボード上の文字を渡すには、その文字をそのまま使います。
キーボード上の文字 A を表すには、名前付き引数 stringに"A"を指定します。
複数の文字は連続して設定します、文字 A、B、C を表すには、名前付き引数 string に "ABC" と指定します。

プラス記号 (+)、キャレット (^)、パーセント記号 (%)、チルダ (~)、かっこ (( )) はそれぞれ SendKeys ステートメントで特別です。
これらの文字を渡すには、文字を中かっこ ({ }) で囲んで指定します、プラス記号であれは {+} のように指定します。


特殊なキーを表す文字

キーを押したときに表示されない文字 (Enter キーや Tab キーなど)
文字ではなく動作を表すキーを指定するには、次に示すコードを使います。

キー コード
BackSpace {BACKSPACE}、{BS}、または {BKSP}
Ctrl + Break {BREAK}
CapsLock {CAPSLOCK}
Del または Delete {DELETE} または {DEL}
{DOWN}
End {END}
Enter {ENTER}または {~}
Esc {ESC}
Help {HELP}
Home {HOME}
Ins または Insert {INSERT} または {INS}
{LEFT}
NumLock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
PrintScreen {PRTSC}
{RIGHT}
ScrollLock {SCROLLLOCK}
Tab {TAB}
{UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}


Shiftキー、Ctrlキー、Altキーと他のキーとの組み合わせを指定するには、
通常のキー コードの前に次のコードを単独、または組み合わせて記述します。

キー コード
Shift +
Ctrl ^
Alt %


Shift キー、Ctrl キー、Alt キーを押しながら他のキーを押す場合は、キーのコードをかっこで囲みます。
Shift キーを押しながらEとCを押す操作を指定するには、"+(EC)" を使います。
Shift キーを押しながらEを押し、その後Shiftキーを離してCを押す場合は、"+EC" とします。


使用例

以下はヘルプにある使用例です。
実践的な使用例ではありませんが、SendKeysを理解する為の練習としては良いでしょう。

Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1) ' 電卓を実行します。
AppActivate ReturnValue        ' 電卓をアクティブにします。
For I = 1 To 20              ' ループ カウンタを設定します。
  SendKeys I & "{+}", True      ' 電卓にキー コードを転送して、
Next I                   ' I の値に 1 を加算します。
SendKeys "=", True           ' 和を求めます。



これはとても便利な機能なのですが、動作が安定しない場合も多く、使用には注意が必要です。

しかし、他の機能では実現できない場合、手操作可能なことは、これで同じことが実現できますので、そういった場合の最終手段として考えて下さい。


※注意

プリントスクリーン(PrntScr)は、SendKeysでは送れません。
プリントスクリーン(PrntScr)を送るには、APIが必要になります。

全シートの画面キャプチャを取得する(keybd_event)

こちらで使用しています。




同じテーマ「ExcelマクロVBA入門」の記事

第122回.Shell関数
第123回.APIについて(Win32API)
第124回.Workbookのイベントプロシージャー
第125回.Worksheetのイベントプロシージャー
第126回.入力規則(Validation)
第127回.他のブックのマクロを実行(Runメソッド)
第128回.マクロをショートカットで起動(OnKeyメソッド)

新着記事 ・・・新着記事一覧を見る

空白セルを正しく判定する方法2|ExcelマクロVBA技術解説(5月6日)
フルパスをディレクトリ、ファイル名、拡張子に分ける|ExcelマクロVBA技術解説(4月15日)
テキストボックスの各種イベント|Excelユーザーフォーム入門(4月9日)
フォルダ(サブフォルダも全て)削除する、Optionでファイルのみ削除|ExcelマクロVBAサンプル集(4月4日)
最後の空白(や指定文字)以降の文字を取り出す|エクセル関数超技(3月26日)
先頭の数値、最後の数値を取り出す|エクセル関数超技(3月26日)
Excelファイルを開かずにシート名をチェック|ExcelマクロVBAサンプル集(3月23日)
数式の参照しているセルを取得する|ExcelマクロVBAサンプル集(3月18日)
CSVの読み込み方法(改の改)|ExcelマクロVBAサンプル集(3月17日)
変数とプロシージャーの命名について|ExcelマクロVBA技術解説(2月12日)

アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|ExcelマクロVBA入門
2.ひらがな⇔カタカナの変換|エクセル基本操作
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|ExcelマクロVBA入門
5.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
6.変数とデータ型(Dim)|ExcelマクロVBA入門
7.セルの参照範囲を可変にする(OFFSET,COUNTA,MATCH)|エクセル関数超技
8.セルのコピー&値の貼り付け(PasteSpecial)|ExcelマクロVBA入門
9.CSVの読み込み方法|ExcelマクロVBAサンプル集
10.定数と型宣言文字(Const)|ExcelマクロVBA入門



  • >
  • >
  • >
  • SendKeysメソッド

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    ↑ PAGE TOP