Avalados por :

Cómo convertir un script de VBS a VBA para automatizar SAP desde Excel

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 80 Vistas
0
Cargando...

Por favor, ayúdame a convertir el siguiente script de VBS a VBA (Macro de Excel). En lugar de abrir SAP y escribir Usuario y Contraseña todos los días, quiero que lo abra desde un archivo de Excel.

Aquí está el script actual que tengo, pero por alguna razón, la ventana emergente de SAP no permanece abierta y Excel no funciona después de ejecutarlo.

Sub LOGONSAP()

If Not IsObject(SAPguiApp) Then

Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")

End If

If Not IsObject(Connection) Then

Set Connection = SAPguiApp.OpenConnection("MYSYSTEM", True)

End If

If Not IsObject(session) Then

Set session = Connection.Children(0)

End If

session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "MYUSER"

session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "MYPSSW"

session.findById("wnd[0]/usr/pwdRSYST-BCODE").SetFocus

session.findById("wnd[0]/usr/pwdRSYST-BCODE").caretPosition = 2

session.findById("wnd[0]").sendVKey 0

End Sub

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

1 Respuestas

0
Cargando...

Hola Tony,

Bienvenido al Foro de Lenguaje de Scripting.

Puedes probar esto:

Sub LOGONSAP()

Dim SAPguiAPP As SAPFEWSELib.GuiApplication

Dim Connection As SAPFEWSELib.GuiConnection

Dim Session As SAPFEWSELib.GuiSession

If SAPguiAPP Is Nothing Then

Set SAPguiAPP = CreateObject("Sapgui.ScriptingCtrl.1")

End If

If Connection Is Nothing Then

'Set Connection = SAPguiApp.OpenConnection("MYSYSTEM", True)

'Here I use a connection string, but it is equivalent to OpenConnection

Set Connection = _

SAPguiAPP.OpenConnectionByConnectionString("/H/10.100.200.300/S/3200", _

True)

End If

If Session Is Nothing Then

Set Session = Connection.Children(0)

End If

'Leer nombre de usuario de la tabla Excel Sheet1, campo A1

Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = _

Worksheets("Sheet1").Cells(1, 1).Value

'Leer contraseña de la tabla Excel Sheet1, campo B1

Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = _

Worksheets("Sheet1").Cells(1, 2).Value

Session.findById("wnd[0]").sendVKey 0

End Sub

Para usar esta solución es necesario agregar primero la biblioteca de la API de Scripting de SAP GUI como referencia a tu proyecto VBA desde el menú Herramientas. Cómo hacerlo está descrito aquí .

Haznos saber tus resultados.

Saludos

Stefan

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?