教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA その他操作】他のアプリケーションにキーを送る(SendKeys)にはどうすればいいの?教えて!

f:id:m_kbou:20200418084022p:plain

Excelから他のアプリケーションにキーを送る方法について紹介します。

 

 

構文

記述方法は以下の通りとなります。

SendKeys ”[送信キー]”,True

[説明]:

他のアプリケーションにキーを送信します。

[送信キー] 他のアプリケーションに送信するキーを記述します。
※「”」(ダブルクォーテーション)で囲みます。

送信するキーについては、以下一覧内容を参考にして下さい。

送信キー 内容(キーボード操作)
% [Alt]
{BS} [BackSpace]
{BREAK} [Ctrl]+[Break]
{CAPSLOCK} [CapsLock]
{CLEAR} [Clear]
[Ctrl]
{DEL} [Delete]
{END} [End]
{ENTER} [Enter]
{ESC} [Esc]
{HELP} [Help]
{HOME} [Home]
{INSERT} [Insert]
{NUMLOCK} [NumLock]
{PGDN} [PageDown]
{PGUP} [PageUp]
{SCROLLLOCK} [ScrollLock]
+ [Shift]
{TAB} [Tab]
{F1}~{F12} [F1]~[F12]
{LEFT} [←]
{UP} [↑]
{RIGHT} [→]
{DOWN} [↓]

[記述例]: 

SendKeys 値 & "{+}", True 

 

使い方

使い方について具体的に説明します。

[プログラミング例]:

Sub サンプル()

  '↓処理①
  Dim 値 As Integer

  '↓処理②
  Shell "CALC.EXE", vbNormalFocus

  '↓処理③
  Application.Wait Now + TimeValue("00:00:02")

  '↓処理④
  For 値 = 1 To 10
    SendKeys 値 & "{+}", True
  Next

End Sub

 内容は、
[処理①]変数:値を指定します。
[処理②]アプリケーション:電卓を起動します。
[処理③]電卓が立ち上がるまでTimeValue関数を使用して2秒間停止します。
[処理④]For~Next文を使用して変数:値に1~10の値をセットしながら電卓に値を足し算して行きます。
との意味になります。

f:id:m_kbou:20210430165323p:plain

※上記のプログラミング例は、VBE(VBA記述画面)に記述しないと実行ができません。VBEの開き方についてはこちらを参考にして下さい。

[実行例]:

①<実行>ボタンには上記のプログラミング例のプログラムが登録されています。この<実行>ボタンをクリックします。(※ボタンの作り方やボタンにプログラムを割り当てるにはこちらを参考にして下さい。)

f:id:m_kbou:20210430165436p:plain

②電卓が起動し、1+2+3+4+5+6+7+8+9+10=55の計算結果が表示されます。

f:id:m_kbou:20210430165448p:plain

[その他の使用例]:

その他送信キーの使用例を添付しておきます。

コマンド 内容
SendKeys "XYZ" X→Y→Zと順番にキーを押す。
SendKeys "{F12}" [F12]キーを押す。
SendKeys "%{F8}" [Alt]を押しながら[F8]キーを押す。
SendKeys "+(XYZ)" [Shift]を押しながらX→Y→Zと順番にキーを押す。

[サンプル]:

上記で説明したファイルをダウンロードできます。ご自由にお使い下さい。

drive.google.com

他のアプリケーションにキーを送る方法についての説明は以上です。

 

おわりに

今回は他のアプリケーションへキーを送る方法について説明しました。基本的な使い方として、Shell関数を使って他のアプリケーションを起動し、その後に今回説明したキーを送る事になります。よって、他のアプリケーションへキーを送る場合は、Shell関数とのセットで使用する事を覚えておいてもらえると良いかと思います。