执行VBA Shell函数时出现运行时错误53

2020-08-27 00:07发布

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

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


HI Gurus,

我一直试图通过使用VBA宏来打开SAP环境。

我需要shell命令以与执行RUN命令时相同的方式工作。

例如-如果我使用"运行命令"窗口运行 sapgui 服务器名 实例,或者

在CLI中

start sapgui 服务器名实例,效果很好。

但是,一旦我使用以下VBA代码,就会收到运行时错误53-

Sub macro()

Dim RetVal

RetVal = Shell(" sapgui assaw0830 00",vbNormalFocus)

结束子

请提出解决方案。

谢谢!

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

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


HI Gurus,

我一直试图通过使用VBA宏来打开SAP环境。

我需要shell命令以与执行RUN命令时相同的方式工作。

例如-如果我使用"运行命令"窗口运行 sapgui 服务器名 实例,或者

在CLI中

start sapgui 服务器名实例,效果很好。

但是,一旦我使用以下VBA代码,就会收到运行时错误53-

Sub macro()

Dim RetVal

RetVal = Shell(" sapgui assaw0830 00",vbNormalFocus)

结束子

请提出解决方案。

谢谢!

付费偷看设置
发送
2条回答
樱桃小丸子0093
1楼-- · 2020-08-27 00:32
将SAPApp暗化为SAPFEWSELib.GuiApplication
         将SAPConnColl昏暗为SAPFEWSELib.GuiComponentCollection
         将SAPConn变暗为SAPFEWSELib.GuiConnection
         将SAPSessColl昏暗为SAPFEWSELib.GuiComponentCollection
         昏暗的会话作为SAPFEWSELib.Guisession
         昏暗的SAPGuiAuto作为对象
         zTime =" 00:00:02"


         SAPLogonEXE =" \ SAP \ FrontEnd \ SAPgui \ SAPlogon.exe"
     '确认SAP系统
         关于错误继续
         设置SAPGuiAuto = GetObject(" SAPGUI")
         如果没有SAPGuiAuto,那么
         '启动SAPLogon.exe
             如果Environ $(" ProgramW6432")然后
                 OutputFilePath = Environ $(" PROGRAMFILES(X86)")
             其他:
                 '处理非64位情况。
                 OutputFilePath = Environ $(" PROGRAMFILES")
             万一
             如果Right(OutputFilePath,1)<>" \"然后
                 OutputFilePath = OutputFilePath&" \"
             万一
             OutputFilePath = OutputFilePath和SAPLogonEXE
             x = Shell(OutputFilePath,vbNormalFocus)
             Application.Wait Now + TimeValue(zTime)
             设置SAPGuiAuto = GetObject(" SAPGUI")
         万一
         出错时转到0
         设置SAPApp = SAPGuiAuto.GetScriptingEngine
         设置SAPConnColl = SAPApp.Connections

 '开始在系统处循环以连接到正确的会话
         对于SAPConnColl中的每个SAPConn
             如果W_Sess = False则
                 如果SAPConn.Description =""或SAPConn.Description = system,则
                     如果SAPConn.DisabledByServer = False,则
                         设置SAPSessColl = SAPConn.Sessions
                         对于SAPSessColl中的每个会话
                             如果session.Busy = False,那么
                                如果session.Info.Client = clientID然后
                                     W_Sess =真
                                     退出
                                万一
                             万一
                         下届会议
                     其他:
                     万一
                 万一
             万一
            
             如果W_Sess = True,则
                 退出
             万一
         下一个SAPConn

         如果W_Sess = False则
             设置SAPConn = Nothing

             设置SAPConn = SAPApp.OpenConnection(system,True,True)
            
             如果SAPConn一无所有
                 systemString = SAPUILandscape(系统)
                 如果systemString <>""然后
                     设置SAPConn = SAPApp.OpenConnectionByConnectionString(systemString,True,True)
                     Application.Wait Now + TimeValue(zTime)
                 其他:


                     退出功能
                 万一
             万一

 

提取了我在电子表格中使用的主要SAP GUI连接代码。 我想这与您所追求的很接近。

d56caomao
2楼-- · 2020-08-27 00:39

错误53 =找不到文件? 如果您指出sapgui的完整路径,会发生什么? Office现在是64位,而sapgui是32位可能是一个问题吗?

一周热门 更多>