VBA – SendKeys – Enviar Pressionamentos de Teclas

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 10, 2023

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:

texto bloco notas

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!

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA