2016-05-25 6 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»)? Или это просто направленные клавиши отправки, которые не работают? – BruceWayne

+0

Все ключи работают в чужих приложениях. То же самое для стрелок. «a», «b», «c», ... ничего не делают, кроме того, что программа не использует их. Здесь только стрелки не работают. – Rodrigue

+0

У кого-то есть решение? Есть альтернатива? – Rodrigue

ответ

1

Вы пытаетесь Wait одну секунду между каждым SendKey. Вместо того, чтобы wait Инг, сфокусировать внимание на приложение между SendKeys:

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

Это позволит улучшить интерфейс между VBA и приложения.

+0

Если я не жду, скрипт посылает ключи слишком быстро, а cmd.exe пропустит некоторые ключи. Как я акцентирую внимание на вызове Shell? – Rodrigue

+0

@Rodrigue Пожалуйста, попробуйте включить ** оба ** 'Wait' и' DoEvents' ............... есть ли улучшения? –

+0

С 'Wait' и' DoEvents'? Без изменений. Как и программа не распознает ключ. – Rodrigue

Смежные вопросы