【发布时间】:2019-04-17 17:37:38
【问题描述】:
我可以通过使用 VBA 和 SAP 记录和播放 .vbs 脚本来自动化 SAP 事务数据检索,现在我遇到了一个我在 Visual Basic Studio .NET 的同一程序中没有看到的问题,如果 SAP Easy访问我的名称连接:LA-6-Prod 已经打开,然后出现 Multilogon 窗口并破坏我的代码,从而使整个事情失败。
如何让我的代码使用已经存在且打开的连接,或者如果它未打开,则打开它?
如果 LA-6-Prod 未打开,它可以完美运行,但无法告诉最终用户在执行宏之前确保没有打开任何连接窗口。
非常感谢
这是我的代码:
Sub my_sap
Dim SapGui, Applic, connection, session, WSHShell
strconnection = Worksheets("sap_info").Range("A2").Value
Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", vbNormalFocus
Set WSHShell = CreateObject("WScript.Shell")
Do Until WSHShell.AppActivate("SAP Logon ")
application.Wait Now + TimeValue("0:00:01")
Loop
Set WSHShell = Nothing
Set SapGui = GetObject("SAPGUI")
Set Applic = SapGui.GetScriptingEngine
Set connection = Applic.OpenConnection('LA-6-Prod', True)
Set session = connection.Children(0)
'===============SAP SCRIPTING===========
'Execute SAP stuffs, I put in here what I recorded from sap record and it works OK
'=======================================
Set session = Nothing
connection.CloseSession ("ses[0]")
Set connection = Nothing
Set sap = Nothing
End Sub
【问题讨论】:
-
循环所有打开的会话有以下答案:stackoverflow.com/a/59841341/9150270
标签: excel vba scripting sap-gui