VBA ファンクションキー(F1~F12)操作

未分類

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.WaitSleep で待機を入れると安定
失敗してもエラーにならない正常に送信されたかの判定ができない
安定性が低い自動化用途では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で前面へ
安定性向上WaitSleepを使って調整
タイトルとURLをコピーしました