VBA SendKeys – Enviar Pulsaciones de Teclas
VBA SendKeys
El método SendKeys de VBA se utiliza para enviar pulsaciones de teclas a la aplicación activa:
Application.SendKeys ("s")
El código anterior imitará la pulsación de la tecla «s» del teclado. El método SendKeys toma dos argumentos:
- Keys – La(s) clave(s) que desea enviar a la aplicación como texto.
- Wait (Opcional) – Este valor puede ser Verdadero o Falso. Si es True, Excel espera a que se procesen primero las teclas antes de ejecutar la siguiente línea de código. Si es Falso, Excel continúa ejecutando el procedimiento sin esperar a que se procesen las claves.
SendKeys se utiliza normalmente cuando se interactúa con otras aplicaciones porque es una forma rápida y fácil de realizar tareas. Por ejemplo, puede utilizar SendKeys al automatizar Internet Explorer. Sin embargo, debe ser extremadamente cuidadoso cuando utilice el método SendKeys ya que puede tener resultados inesperados. Recomendamos utilizar SendKeys sólo como último recurso y/o cuando los errores son tolerables (o fácilmente detectables)
Ejemplos de SendKeys en VBA
Cada tecla en términos de letras está representada por su carácter, por ejemplo a es «a». Si desea utilizar teclas en combinación con Ctrl, Shift o Alt entonces tiene que preceder el código de la tecla con lo siguiente:
Clave | Código |
---|---|
Ctrl | ^ |
Mayúsculas | + |
Alt | % |
El siguiente código utiliza el método SendKeys para guardar el libro de trabajo:
Sub UsandoSendKeys()
Application.SendKeys ("^s")
End Sub
Como mencionamos antes, necesitas ser extremadamente cuidadoso cuando uses SendKeys. El siguiente código especifica un tiempo de espera de 10 segundos antes de que el texto sea ingresado/enviado al Bloc de Notas. Al esperar 10 segundos, le das al Bloc de Notas la oportunidad de abrirse correctamente, reduciendo la posibilidad de un error.
Nota: Este código utiliza el método Application.Wait.
Sub UsandoSendKeysConWait()
Call Shell("C:\Windows\system32\Notepad.Exe", vbNormalFocus)
Application.Wait (Now() + TimeValue("00:00:10"))
Call SendKeys("Esto es algo de texto", True)
End Sub
El resultado después de 10 segundos de espera es:
SendKeys puede ser una forma extremadamente rápida y sencilla de realizar tareas. Sin embargo, los riesgos de error son relativamente altos. Utilice SendKeys sólo cuando ese riesgo sea aceptable