Estimados, les saludo cordialmente y agradezco me puedan ayudar con lo siguiente. Se que este foro no es de visual basic pero tal vez alguien se le ha presentado una situación similar.
Estoy utilizando una macro en vba que permite llamar al scripting sap con la finalidad de obtener información. Hace un par de semanas, actualice Office 2010 a Office 2016 y por alguna extraña razon la funcionalidad me entrega error.
““Se ha producido el error 91 en tiempo de ejecución:””
““Variable de objeto o bloque with no establecido.””
He marcado en negritas en la depuración:
Public SapGuiAuto, WScript, msgcol
Public objGui As GuiApplication
Public objConn As GuiConnection
Public objSess As GuiSession
Public objSBar As GuiStatusbar
Public objSheet As Worksheet
Dim W_System
Function Attach_Session() As Boolean
Dim il, it
Dim W_conn, W_Sess
If W_System = "" Then
Attach_Session = False
Exit Function
End If
If Not objSess Is Nothing Then
If objSess.Info.SystemName & objSess.Info.Client = W_System Then
Attach_Session = True
Exit Function
End If
End If
If objGui Is Nothing Then
Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
End If
**For il = 0 To objGui.Children.Count - 1**
**> Set W_conn = objGui.Children(il + 0)**
**> For it = 0 To W_conn.Children.Count - 1**
**> Set W_Sess = W_conn.Children(it + 0)**
**> If W_Sess.Info.SystemName & W_Sess.Info.Client = W_System Then**
**> Set objConn = objGui.Children(il + 0)**
**> Set objSess = objConn.Children(it + 0)**
**> Exit For**
**> End If**
**> Next**
Next
If objSess Is Nothing Then
MsgBox "No existe sesión " + W_System + " activa en SAP, o el scripting esta deshabilitado.", vbCritical + vbOKOnly
Attach_Session = False
Exit Function
End If
If IsObject(WScript) Then
WScript.ConnectObject objSess, "on"
WScript.ConnectObject objGui, "on"
End If
Set objSBar = objSess.findById("wnd[0]/sbar")
objSess.findById("wnd[0]").maximize
Attach_Session = True
End Function
Public Sub RunGUIScriptExtraerHistorico()
Dim W_Ret As Boolean
W_Ret = Attach_Session
If Not W_Ret Then
Exit Sub
End If
On Error GoTo myerr
objSess.findById("wnd[0]").maximize
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "me2n"
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/tbar[1]/btn[17]").press
objSess.findById("wnd[1]/usr/txtENAME-LOW").Text = "jvera"
objSess.findById("wnd[1]/usr/txtENAME-LOW").SetFocus
objSess.findById("wnd[1]/usr/txtENAME-LOW").caretPosition = 5
objSess.findById("wnd[1]").sendVKey 0
objSess.findById("wnd[1]/tbar[0]/btn[8]").press
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").setCurrentCell 3, "TEXT"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "3"
objSess.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").doubleClickCurrentCell
objSess.findById("wnd[0]/tbar[1]/btn[16]").press
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/txt%%DYN001-LOW").SetFocus
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/txt%%DYN001-LOW").caretPosition = 0
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/txt%%DYN003-LOW").SetFocus
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/txt%%DYN003-LOW").caretPosition = 0
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/ctxt%%DYN004-LOW").SetFocus
objSess.findById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/ctxt%%DYN004-LOW").caretPosition = 1
objSess.findById("wnd[0]").sendVKey 0
objSess.findById("wnd[0]/tbar[1]/btn[8]").press
objSess.findById("wnd[0]/tbar[1]/btn[33]").press
objSess.findById("wnd[1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell").setCurrentCell 9, "TEXT"
objSess.findById("wnd[1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell").selectedRows = "9"
objSess.findById("wnd[1]/usr/ssubD0500_SUBSCREEN:SAPLSLVC_DIALOG:0501/cntlG51_CONTAINER/shellcont/shell").clickCurrentCell
objSess.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
objSess.findById("wnd[1]/usr/ctxtDY_PATH").Text = "ubicacion"
objSess.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "archivo.xlsx"
objSess.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 28
objSess.findById("wnd[1]/tbar[0]/btn[11]").press
objSess.findById("wnd[0]/tbar[0]/btn[15]").press
objSess.findById("wnd[0]/tbar[0]/btn[15]").press
Exit Sub
myerr:
MsgBox "Listo (se produjo un error)", vbCritical + vbOKOnly
End Sub
Sub ExtraerHistoricoCTTO()
W_System = "PRD700"
RunGUIScriptExtraerHistorico
End Sub
Alguien ha tenido un problema similar?
ademas, me di cuenta que al grabar un script en sap, el pc no me reconoce los archivos de extension .vbs, lo que me impide abrir con bloc de notas.
quedo atento a sus respuestas, saludos!