Office関連

SendKeysでWindowsキーを送信するVBAマクロ

VBA SendKeys Windowsキー」といったキーワード検索でのアクセスがありました。

たしかに「SendKeys “{WIN}”」や「SendKeys “{LWIN}”」といったコードを実行してもエラーになるだけなので、Windowsキーを送信したいときはどうすれば良いのか悩んでしまうかもしれませんが、Wikipediaにも書かれているように、「Ctrl + Esc」キーを押すことでもWindowsキーを押したときと同様にスタートメニューを表示させることができます。

Public Sub Sample()
  SendKeys "^{ESC}" 'Ctrl + Escキー
End Sub

しかし、Windowsキーを組み合わせたショートカットキー、たとえば「Windows + M」キーを押したい場合、「SendKeys “^{ESC}M”」を実行しても上手くいきません。

そういった場合は下記のようにkeybd_event関数を使うことで処理を実行することができます(下記コードは32ビット環境向けです)。

Private Declare Sub keybd_event Lib "user32.dll" ( _
  ByVal bVk As Byte, _
  ByVal bScan As Byte, _
  ByVal dwFlags As Long, _
  ByVal dwExtraInfo As Long)

Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_LWIN = &H5B

Public Sub Sample2()
  keybd_event VK_LWIN, 0, 0, 0
  keybd_event vbKeyM, 0, 0, 0
  keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
  keybd_event vbKeyM, 0, KEYEVENTF_KEYUP, 0
End Sub

ただ、ウィンドウの最小化をしたいだけなら、ShellオブジェクトのMinimizeAllを使った方が簡単で確実です。

Public Sub Sample3()
  CreateObject("Shell.Application").MinimizeAll
End Sub

SendKeysでWindowsキーを送信して何かを実行したいときは、まずは上記のような別の方法を探してみることをお薦めします。


2017/1/8 追記:
Windows 10でスケッチパッドを起動する場合は、下記記事をご参照ください。
(VBScript – 「Windowsボタン + W」をSendkeyしたい。)

オトカドール 3rdドリームをプレイしてきたよ(4)前のページ

ポップンミュージック エクラルのオトカドールカードをゲットしたよ。次のページ

関連記事

  1. Office関連

    Office XP Developer Toolsでリボン対応のCOMアドインを作成する。

    「Visual Basic 6でリボン対応のアドインを作成する」ではV…

  2. Office関連

    インストールされたフォントの一覧を取得するVBAマクロ

    最近自分の周りでPowerPoint VBAが流行っているようだったの…

  3. Office関連

    【2018年7月版】ソースコードを番号行付きのテーブルに変換するWordマクロ

    6年以上前、Wordに貼り付けたソースコードを番号付きのテーブルに変換…

  4. Office関連

    インストールされているアプリケーション一覧を取得するVBAマクロ

    端末にインストールされているアプリケーション名を調べる必要があったので…

  5. Office関連

    [PowerPoint]テーブルを「変形」して値の変化を強調

    前回の記事と同じく、Insider版のバージョン 1903 (ビルド …

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

PAGE TOP