SendKeysの使い方
2021-08-09 00:00:00
SendKeysステートメントを使うと、キーボードを使ったように画面に対して入力することができます。あまり仕事では使わないかもしれませんが、アイディア次第でおもしろい機能がつくれるかもしれません。
文字以外のキーは下のように{}で囲んだ文字列を使います。( {PRTSC} はうまく機能しないようです。)
BACKSPACE: {BACKSPACE}, {BS}, or {BKSP} BREAK: {BREAK} CAPS LOCK: {CAPSLOCK} DELETE: {DELETE} or {DEL} END: {END} ENTER: {ENTER} or ~ ESC: {ESC} HELP: {HELP} HOME: {HOME} INSERT: {INSERT} or {INS} NUM LOCK: {NUMLOCK} PAGE DOWN: {PGDN} PAGE UP: {PGUP} PRINT SCREEN: {PRTSC} SCROLL LOCK: {SCROLLLOCK} TAB: {TAB} ↓: {DOWN} ↑: {UP} ←: {LEFT} →: {RIGHT} F1 から F16: {F1} から {F16}
キーを押しながらの入力には下の記号を使います。(+,^,%の入力には{+} ,{^},{%}を使います。)
- Shift +
- Ctrl ^
- Alt %
この機能利用してクリップボードからペイントを使って画像ファイルを保存するコードを作りました。スクリーンショットを取得した後に実行すると、デスクトップにscreenshot_時刻.jpgという名前でファイルが作成されます。
Sub SaveImageFromClipboard() Dim taskid As Variant Dim cb As Variant 'クリップボードの中身を確認 cb = Application.ClipboardFormats If cb(1) = -1 Then Exit Sub End If If cb(1) <> xlClipboardFormatBitmap Then Exit Sub End If taskid = Shell("mspaint.exe", vbNormalFocus) 'ペイントを開く Application.Wait Now + TimeValue("00:00:01") '開くまで1秒まつ AppActivate taskid 'ペイントをアクティブにする SendKeys "^v" '貼り付け SendKeys "+^x" 'トリミング SendKeys "^s" SendKeys Environ("USERPROFILE") & "\Desktop\screenshot_" & Format(Now, "yymmddhhmmss") & ".jpg" SendKeys "{ENTER}" SendKeys "%{F4}" 'ペイントを閉じる End Sub