VBA – SendKeys – Enviar Pressionamentos de Teclas
VBA SendKeys
O método SendKeys do VBA é usado para enviar pressionamentos de teclas para o aplicativo ativo:
Application.SendKeys ("s")
O código acima imitará o pressionamento da tecla “s” no teclado.
O método SendKeys recebe dois argumentos:
- Keys – A(s) tecla(s) que você deseja enviar ao aplicativo como texto.
- Wait(opcional) – Esse valor pode ser True (verdadeiro) ou False (falso). Se for True, o Excel aguardará que as teclas sejam processadas primeiro antes de executar a próxima linha de código. Se for Falso, o Excel continuará a executar o procedimento sem esperar que as teclas sejam processadas.
O SendKeys geralmente é usado na interação com outros aplicativos porque é uma maneira rápida e fácil de realizar tarefas. Por exemplo, você pode usar SendKeys ao automatizar o Internet Explorer.
Entretanto, você deve ser extremamente cuidadoso ao usar o método SendKeys, pois ele pode ter resultados inesperados. Recomendamos usar o SendKeys somente como último recurso e/ou quando os erros forem toleráveis (ou facilmente detectáveis).
Exemplos de SendKeys do VBA
Cada tecla em termos de letras é representada por seu caractere, por exemplo, a é “a”.
Se você quiser usar teclas em combinação com Ctrl, Shift ou Alt, deverá preceder o código da tecla com o seguinte:
Tecla | Código |
---|---|
Ctrl | ^ |
Shift | + |
Alt | % |
O código a seguir usa o método SendKeys para salvar a pasta de trabalho:
Sub UsandoSendKeys()
Application.SendKeys ("^s")
End Sub
Como mencionamos anteriormente, você precisa ser extremamente cuidadoso ao usar SendKeys. O código a seguir especifica um tempo de espera de 10 segundos antes de o texto ser inserido/enviado ao Bloco de Notas. Ao esperar 10 segundos, você dá ao Bloco de Notas a chance de abrir corretamente, reduzindo a chance de erro.
Observação: esse código usa o método Application.Wait.
Sub Usando_SendKeys_Com_Wait()
Call Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)
Application.Wait (Now() + TimeValue("00:00:10"))
Call SendKeys("Este é um texto", True)
End Sub
O resultado após 10 segundos de tempo de espera é o seguinte:
SendKeys pode ser uma maneira extremamente rápida e fácil de realizar tarefas. Entretanto, os riscos de erros são relativamente altos. Use o SendKeys somente quando esse risco for aceitável!