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関連

    [Word VBA]ルビ(ふりがな)ダイアログの操作に挑む(2)

    2016/10/28 追記:改良版のマクロを書きました。…

  2. Office関連

    Chromeアプリ版Office Onlineを使ってみました。

    「Microsoft、GoogleのChromeアプリ版Office …

  3. Office関連

    1MBのWordファイルって何文字くらい?

    ZIP圧縮されたOOXML形式のWordファイルって1MBだと何文字分…

  4. Office関連

    外部アプリケーションのコンボボックスの内容を取得するVBAマクロのサンプル

    Q&Aサイトに下記質問がありました。(この質問も何となく似たような…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP