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

    PDFファイルにヘッダーとフッターを追加するVBAマクロ

    mougに“マクロで既存のPDFファイルのフッターを操作(追加)したい…

  2. Office関連

    PowerShellからNetOfficeを使ってWordやPowerPointを操作する方法

    前回の記事関連で、WordやPowerPointもドンとこいで…

  3. Office関連

    フッターにページ番号と総ページ数を挿入するWordマクロ

    以前書いた、フッターに「ページ番号 / 総ページ数」を挿入するWord…

  4. Office関連

    ConvertToTextメソッドを使ってテーブルを二次元配列に変換するWordマクロ

    WordのTableオブジェクトには、テーブルを解除して文字列に変換す…

  5. Office関連

    Excel 2016でUTF-8のCSVファイルがサポートされるようになりました。

    Office 2016の10月の機能更新によって、ExcelでUTF-…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP