Saludos.
No se si el titulo es muy orientativo de la información que les solicito.
Me explicaré mejor ahora:
Tengo una macro en excel que se conecta automáticamente con SAP y ejecuta una transacción pre-asignada y la ejecuta varias veces cambiando diversos parámetros que se le van pasando.
Esta aquí todo funciona bien.
Yo lo que deseo es que dicho proceso se realice en un segundo plano, o sea, que no se estén viendo como se van rellenando los campos correspondientes. que solo se vea la hoja de excel desde donde lanzo la macro.
El codigo de conexion es:
Set SapGui = GetObject("SAPGUI")
Set Appl = SapGui.GetScriptingEngine
Set Connection = Appl.Openconnection("XXXXXXX", True)
Set Session = Connection.Children(0)
Session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = User
Session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = Pass
Session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN"
Session.findById("wnd[0]").sendVKey 0
.......
Con poder mantener la ventana de la aplicación minimizada me llegaría.
pero no le hace caso, cuando hago la llamada, me abre la ventana de SAP y me muestra la carga automática de los datos y el resto de todos los procesos los veo en primer plano.
Saludos.
Lo que quiero es que la ventana de excel se mantenga abierta y la macro se lance oculta, o sea, que no se vea la ventana de SAP.
He probado con lo que indicas: SapGui.Visible = False pero me indica que no existe esa propiedad para ese objeto.
La prueba la realice con el siguiente codigo:
Sub LoginSAP()
User = InputBox(“SAP User ID”)
Pass = Module2.InputBoxDK(“Please, enter your SAP password”)
If FindProcess(“saplogon.exe”) Then
Set SapGui = GetObject(“SAPGUI”)
Else
Call Shell(“C:\Program Files (x86)\SAP\FrontEnd\SAPGUI\saplogon.exe”, vbMinimizedFocus)
Esperar 3 'funcion para esperar 3 segundos antes de continuar
Set SapGui = GetObject(“SAPGUI”)
End If SapGui.Visible = False ’ Error 438 El objeto no admite esta propiedad o metodo.
Set Appl = SapGui.GetScriptingEngine
Set Connection = Appl.Openconnection(“Tenaris - PROD”, True)
Set Session = Connection.Children(0)
Session.findById(“wnd[0]/usr/txtRSYST-BNAME”).Text = User
Session.findById(“wnd[0]/usr/pwdRSYST-BCODE”).Text = Pass
Session.findById(“wnd[0]/usr/txtRSYST-LANGU”).Text = "EN"
Session.findById(“wnd[0]”).sendVKey 0
End Sub
El error lo marca en la linea que te pongo en negrita