VBA脚本-是否可以通过SID而不是名称登录

2020-09-22 17:29发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个VBA脚本,该脚本登录到...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个VBA脚本,该脚本登录到SAP,从Excel工作表中输入一些数据,提取一些结果并将其复制回Excel。 该脚本在我的机器上可以正常运行,但是在其他机器上却不能正常运行,我发现这是因为在每台机器上,系统连接参数中指定的"描述"都不相同(不知道为什么)。 为了解决这个问题,我想知道是否可以改用System ID字段,因为这里的所有计算机上都一样:

代码的相关部分在这里:

如果不是IsObject(SAPguiApp),则
出错时恢复下一个
设置SAPguiAuto = GetObject(" SAPGUI")
如果Err.Number <> 0则
出错时转到0
设置WshShell = CreateObject(" WScript.Shell")
设置oExec = WshShell.Exec(" C:\ Program Files(x86)\ SAP \ FrontEnd \ SAPgui \ saplogon.exe")

不是WshShell.AppActivate(" SAP Logon 750")
睡眠1
循环
设置SAPguiAuto = GetObject(" SAPGUI")
其他
出错时转到0
结束If
设置SAPguiApp = SAPguiAuto.GetScriptingEngine
结束,如果
如果不是IsObject(Connection),则
设置连接= SAPguiApp.OpenConnection(" 此处为字符串",为True)
如果If
If不是IsObject(session),则结束。
设置会话= Connection.Children(0)
如果,则

结束。

如果session.Children.Count> 1,则
session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2")。选择
session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT2") .SetFocus
session.findById(" wnd [1]/tbar [0]/btn [0]")。按
如果结束

我还包括了允许多个会话的部分,因为我花了很长时间才弄清楚今天该怎么做,这可能对某人有所帮助。

4条回答
空代码
2020-09-22 18:25

顺便说一句,与您关于检测多个孩子的评论有关。

有一些方法可以将脚本附加到现有会话,但是您也可以通过这种方式测试屏幕元素。

'检查"意外"弹出窗口,即测试屏幕元素的存在。 如果没有任何内容,则不会使脚本崩溃。
 不做时session.findById(" wnd [1]",False)什么都没有
     如果不是session.findById(" wnd [1]/usr/radMULTI_LOGON_OPT3",False)则为空
 '决定如果允许多次登录,该怎么办
 如果1 = 2,则"这里有一些有意义的if语句,或者只是用它来随意决定。
 session.findById(" wnd [1]/usr/btnBUTTON_2")。按
 其他
 session.findById(" wnd [1]/usr/btnBUTTON_3")。按
 万一
     万一
 '其他一些测试以嵌套测试的存在为例。
     如果不是session.findById(" wnd [1]/usr/btnSPOP-OPTION2",False)则为空
         session.findById(" wnd [1]/usr/btnSPOP-OPTION2")。press
     万一
 循环
 

只需将ID替换为各种情况所需的ID。

一周热门 更多>