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

    PowerPoint 2013でYouTubeの動画を挿入する。

    2014/5/23 追記:いつの間にか「ビデオの挿入ダイアログ」が…

  2. Office アドイン

    [Office用アプリ]メールアプリの配置方法

    OutlookやOutlook Web App上で動作するメールアプリ…

  3. Office関連

    「個人用テンプレートの既定の場所」を設定するWordマクロ

    前回の記事で、Word 2013で個人用テンプレート(カスタム テンプ…

  4. Microsoft Teams

    Microsoft Teamsでタブの構築を試してみました。

    下記記事の通り、Office 365に新たなコラボレーションツール「M…

  5. Office関連

    コントロールID 一覧(Office 2013)

    2013/03/25 追記:Office 2013のコントロールI…

  6. Excel

    フォルダ内にあるExcelファイルをカウントするVBScript

    「フォルダ内 Excel 数える VBScript」といったキーワード…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP