Essa linha resolveu o problema: Set Connection = SAPguiApp.OpenConnection("P01 [Produção]", True)
Eu já a tinha usado mas devia estar fazendo algo errado.
Melhorei o código com tratamento de erro:
Sub ConexaoSAP()
On Error GoTo NAOLOGADO
Set session = GetObject("SAPGUI").GetScriptingEngine.Children(0).Children(0)
GoTo LOGADO
NAOLOGADO:
'Se SAP não estiver aberto, abre SAP minimizado
If FindWindow(vbNullString, "SAP Logon 740") = 0 Then Call Shell("C:Program Files (x86)SAPFrontEndSAPguisaplogon.exe", vbMinimizedFocus)
'Seta sessao e faz Login
If Not IsObject(SAPguiApp) Then Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")
If Not IsObject(Connection) Then Set Connection = SAPguiApp.OpenConnection("111 PRD (MP0) LAR ECC 6.07 on HANA", True)
If Not IsObject(session) Then Set session = Connection.Children(0)
session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100" 'Mandante
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "usuario" 'Usuario
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "senha" 'Senha
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "PT" 'Idioma de Logon
session.findById("wnd[0]").sendVKey 0
LOGADO:
On Error GoTo -1 'Desliga GoTo
'========= TELA INICIAL DO SAP ========='
session.findById("wnd[0]/tbar[0]/okcd").Text = "sm37" 'Entra na tela sm37
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").maximize
'MAIS CODIGO.......
'Termina a sessao com SAP
End Sub
Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"
Postado : 01/03/2016 1:44 pm