2016-05-25 5 views
0

"{ENTER}"以外のキーを使用するときに問題が発生します。VBA Excel Sendkeys ARROWがcmd.exeで動作しない

"{UP}""{DOWN}""{LEFT}""{RIGHT}"は、なぜ、cmd.exeでは動作しないのですか?

Private Sub press_key(key As String) 
    SendKeys key, True 
    Application.Wait (Now + TimeValue("0:00:01")) 
End Sub 

Sub Test() 

Call Shell("C:\ ... \name.EXE", vbNormalFocus) 

Application.Wait (Now + TimeValue("0:00:01")) 
press_key ("{ENTER}") 
press_key ("{ENTER}") 
press_key ("{DOWN}") 
press_key ("{DOWN}") 
press_key ("{DOWN}") 
press_key ("{RIGHT}") 
press_key ("{DOWN}") 
press_key ("{DOWN}") 
press_key ("{DOWN}") 
press_key ("{ENTER}") 

End Sub 

Excel launch the console

+0

他のもの(「a」、「b」など)を使用できますか?それとも、動作していない方向性のsendkeysですか? – BruceWayne

+0

すべてのキーは別のアプリケーションで動作します。矢印と同じです。 "a" "b"、 "c"、...プログラムはそれらを使わないので何もしません。ここでは矢印のみが機能しません。 – Rodrigue

+0

誰かに解決策がありますか?代わりがありますか? – Rodrigue

答えて

1

あなたは、各SENDKEY間Wait 1秒にしようとしています。むしろwait INGよりも、のSendKeys間のアプリにフォーカスを与える:

Private Sub press_key(key As String) 
    SendKeys key, True 
    DoEvents 
End Sub 

これはVBAとアプリ間のインタフェースを改善します。

+0

私が待たなければ、スクリプトはキーをあまりにも早く送り、cmd.exeはいくつかのキーを逃してしまいます。シェルコールにどのようにフォーカスを当てるのですか? – Rodrigue

+0

@Rodrigue ** WaitとDoEventsの両方を含めるようにしてください。 –

+0

'Wait'と' DoEvents'で?変化なし。プログラムがキーを認識しないように。 – Rodrigue

関連する問題