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. Excel

    Google TTSで文字列を読み上げるExcelアドイン

    前回の記事で書いたGoogle TTSで文字列を読み上げるマクロ(言語…

  2. Office関連

    外部からOutlookのマクロを実行するマクロ

    外部からOutlookのマクロを実行するマクロ今回は外部からO…

  3. Office関連

    Presentation Translatorが公開されました。

    下記記事で紹介している「Microsoft Translator アド…

  4. Office関連

    [Word 2013]表形式のデータ入力にはコレが便利!?「コンテンツ繰り返しコントロール」の紹介

    Wordにはユーザー入力フォームを作るのに便利な機能「コンテンツ コン…

  5. Office関連

    テスト用の文字列を挿入するWordマクロ

    文字列操作を行うマクロを書いているとき、テスト用に「あいうえおかきくけ…

  6. Office関連

    徹底的にSymbol(シンボル)フォントをチェックするWordマクロ

    文字列をメモ帳にコピー&ペーストすると文字化けしたり、フォント指定で検…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP