Contenido
La instrucción SendKeys en VBA se utiliza para enviar pulsaciones de teclas a la aplicación activa, como si el usuario estuviera escribiendo en el teclado. Esto se puede usar para controlar aplicaciones mediante la automatización de la entrada del usuario.
Ejemplo
Sub SendKeysExample()
' Esto enviará las pulsaciones de teclas "Hola Mundo" al programa activo
SendKeys "Hola Mundo"
End Sub
Ten en cuenta los siguientes puntos al usar SendKeys:
- SendKeys imita la entrada del teclado y puede afectar cualquier aplicación que esté activa en ese momento.
- El uso de SendKeys puede ser poco fiable si el usuario interactúa con la computadora mientras el script está en ejecución ya que puede alterar el destino de las teclas enviadas.
- SendKeys no espera a que las aplicaciones se procesen o carguen, por lo que puede que necesite incluir pausas entre pulsaciones de teclas para asegurarse de que se ejecuten de manera ordenada y en el momento adecuado.
Si necesitas enviar una combinación de teclas o teclas especiales, debes utilizar caracteres especiales dentro de la cadena. Por ejemplo, para enviar la tecla Enter, usarías «{ENTER}». Aquí hay una lista de algunos caracteres especiales:
- {ENTER}
- {TAB}
- {ESC}
- {F1} {F15} (para las teclas de función)
- {LEFT}, {RIGHT}, {UP}, {DOWN} (para las teclas de flecha)
- +, ^, % (para Shift, Ctrl y Alt respectivamente; usado en combinación con otras teclas, por ejemplo «+{F1}» enviaría Shift+F1)
Supongamos que quieres abrir el bloc de notas y escribir algo en él, podrías hacer algo como esto:
Sub OpenNotepadAndType()
' Iniciar Bloc de Notas
Shell "notepad.exe", vbNormalFocus
' Esperar un poco para que el Bloc de Notas se inicie
Application.Wait (Now + TimeValue("0:00:02"))
' Escribir texto en el Bloc de Notas
SendKeys "Hola Mundo", True
' Enviar Enter
SendKeys "{ENTER}", True
' Enviar una combinación de teclas, por ejemplo, Ctrl+S para abrir la ventana de guardar
SendKeys "^s", True
End Sub
Recuerda que el uso de SendKeys puede ser impredecible y generalmente se desaconseja para la automatización robusta de procesos. Si tienes la posibilidad de utilizar controles de formulario de VBA, métodos de objeto de aplicaciones específicos o otras técnicas de automatización, como la Automatización de Interfaz de Usuario de Windows, serían más confiables y preferibles por encima de SendKeys.