¿Cómo usar la instrucción SendKeys en VBA?

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

VBA

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:

VBA

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.

Conoce nuestra tienda

Ver más productos

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Ayúdanos a hacer crecer el proyecto

¡Únete a nuestro Grupo de Facebook!

Deja un comentario