¿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.

Aquí hay un ejemplo básico de cómo utilizar `SendKeys`:

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`.

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

Deja un comentario