SendKeysメソッドで、Enterキーが効かない(押下できない)
SendKeysメソッドでは、VBAでの最終手段、キー押下を物理的に行う事が可能です。
別のアプリケーションやオブジェクト、Internet Explorer(IE)自動制御の際にも
SendKeysメソッドで、無理やり反映する場合があるかと思います。
キーを押下させるので無理やり反映できたと思っても、
安定しなかったり、キー入力が反映できない場合があります。
その問題に関しては以下、どちらかである程度解決するのではないでしょうか。
ENTERキーが効かない
{ENTER} で処理してませんか? {ENTER} はテンキー側のENTERです。
テンキー側のENTERはNumLock キーのON / OFFに影響されます。
結果、反応がない、キーが押せない現象が発生します。
ENTERは、~ (チルダ) です。
'■SendKeysのEnterの例 SendKeys "~" 'Enter
キー押下動作が反映されない
WScript.Shellオブジェクト経由で、SendKeysでキーコードを送信できます。
これで、ほとんど解決すると考えます。
'■メモ帳を起動 Shell "C:\Windows\Notepad.exe" SendKeys "SendKeyの文字列テスト", True With CreateObject("Wscript.Shell") .SendKeys "^(A)", True 'Ctrl + A .SendKeys "^(C)", True 'Ctrl + C .SendKeys "{RIGHT}", True '→ .SendKeys "~", True 'Enter .SendKeys "^(V)", True 'Ctrl + V End With
注意点
上記でも反応がない(反応が早すぎる)場合は、Application.Wait Now + TimeValue(“00:00:01”)といった形で、
少し待ちましょう。
関連記事
物理キーを反映させる【SendKeysメソッド】
任意のキー押下でマクロを起動する【OnKey メソッド 】VBA
※OnKeyメソッドでも {ENTER} と ~(チルダ)を間違えるケースは多いです!
VBAでIE操作「ファイルダイアログからアップロードする」
VBAでIE操作「Internet Explorerを最前面に表示」する
コメント