VBAでファンクションキー(F1~F12)を操作するには、SendKeys
メソッドを使用するのが最も手軽な方法です。ただし、対象ウィンドウがアクティブであることが前提になります。
✅ SendKeysでファンクションキーを送信する方法
Sub ファンクションキーを送る()
' 対象アプリケーションをアクティブにする例(メモ帳)
Shell "notepad.exe", vbNormalFocus
Application.Wait Now + TimeValue("00:00:01") ' 1秒待ってアクティブ化
' F5キーを送信(メモ帳では日時が挿入される)
SendKeys "{F5}"
End Sub
✅ 各ファンクションキーの指定方法(SendKeys構文)
キー | SendKeys 文字列 |
---|
F1 | {F1} |
F2 | {F2} |
F3 | {F3} |
… | … |
F12 | {F12} |
複数キーを組み合わせる場合(例:Ctrl + F5
):
SendKeys "^({F5})"
✅ 注意点(SendKeysの制限)
項目 | 内容 |
---|
対象アプリがアクティブである必要あり | ウィンドウが手前に来ていないと無視されることがある |
タイミング調整が必要 | Application.Wait や Sleep で待機を入れると安定 |
失敗してもエラーにならない | 正常に送信されたかの判定ができない |
安定性が低い | 自動化用途ではAutoHotKeyやPower Automateが推奨される場合も |
✅ 応用例:ExcelでF2キー(セル編集)を自動実行
Sub セル編集モードにする()
Range("A1").Select
SendKeys "{F2}"
End Sub
✅ 代替手段(安定性向上)
Windows API
を使ってキーボード操作をシミュレートする方法もあります(※より高度)
AutoHotKey
など外部ツールとの連携で安定性アップ
Shell
でアプリを起動し、AppActivate
でアクティブ化してから SendKeys
✅ まとめ
操作 | 方法 |
---|
Fキー送信 | SendKeys "{F1}" ~ {F12} |
組み合わせ | 例:SendKeys "^({F5})" |
対象指定 | Shell + AppActivate で前面へ |
安定性向上 | Wait や Sleep を使って調整 |