从 SAP GUI 自动导出工作表
Automatically export a worksheet from SAP GUI
我通过 Excel VBA 使用 vbscript 运行 SAP GUI,以下是我的操作:
- 登录
- select 代码
- 给出数据并执行
- 导出为工作表。
我的问题是最后一个操作(导出为工作表)将显示一个文件对话框,我需要选择路径并按下。但是我想在没有“另存为”对话框的情况下通过我设置的路径和文件名自动导出。
有什么方法可以做到吗?
这是我的 VBA 代码:
Dim SAPconn As Object
Dim SAPsession As Object
Dim SapGuiAuto As Object
Dim WshShell As Object
Shell "C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")
Do Until WshShell.AppActivate("SAP Logon ")
Application.Wait Now + TimeValue("0:00:01")
Loop
Set WshShell = Nothing
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPapp = SapGuiAuto.GetScriptingEngine
Set SAPconn = SAPapp.Openconnection("ConnectionsName", True)
Set SAPsession = SAPconn.Children(0)
'LOGON
SAPsession.findById("wnd[0]").maximize
SAPsession.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100"
SAPsession.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "userid"
SAPsession.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "password"
SAPsession.findById("wnd[0]").sendVKey 0
SAPsession.findById("wnd[0]/tbar[0]/okcd").Text = "tcode"
SAPsession.findById("wnd[0]").sendVKey 0
'run the script(skip)
SAPsession.findById("wnd[0]/usr/ctxtWERKS-LOW").Text = Cells(1, 2)......
'execute
SAPsession.findById("wnd[0]/tbar[1]/btn[8]").press
'show list
SAPsession.findById("wnd[0]/tbar[1]/btn[48]").press
'export
SAPsession.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[1]").Select
'↑ just select export>as worksheet and open the file dailog....
这是我用来从 SAP 保存的代码 - 元素的确切路径
(例如 "wnd[1]/usr/ctxtDY_PATH"
)将与您的情况不同,因为它取决于您使用的表:
SAPsession.findById("wnd[1]/tbar[0]/btn[0]").press
SAPsession.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Downloads\"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "Downloaded_file_name"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 13
SAPsession.findById("wnd[1]/tbar[0]/btn[11]").press
这会执行以下操作:
- 点击保存按钮
- 指定要保存文件的所需文件路径
- 指定想要的文件名
- 定位光标并按保存
据我所知,完全绕过保存对话框是不可能的。
我通过 Excel VBA 使用 vbscript 运行 SAP GUI,以下是我的操作:
- 登录
- select 代码
- 给出数据并执行
- 导出为工作表。 我的问题是最后一个操作(导出为工作表)将显示一个文件对话框,我需要选择路径并按下。但是我想在没有“另存为”对话框的情况下通过我设置的路径和文件名自动导出。
有什么方法可以做到吗?
这是我的 VBA 代码:
Dim SAPconn As Object
Dim SAPsession As Object
Dim SapGuiAuto As Object
Dim WshShell As Object
Shell "C:\Program Files\SAP\FrontEnd\SAPgui\saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")
Do Until WshShell.AppActivate("SAP Logon ")
Application.Wait Now + TimeValue("0:00:01")
Loop
Set WshShell = Nothing
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPapp = SapGuiAuto.GetScriptingEngine
Set SAPconn = SAPapp.Openconnection("ConnectionsName", True)
Set SAPsession = SAPconn.Children(0)
'LOGON
SAPsession.findById("wnd[0]").maximize
SAPsession.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100"
SAPsession.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "userid"
SAPsession.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "password"
SAPsession.findById("wnd[0]").sendVKey 0
SAPsession.findById("wnd[0]/tbar[0]/okcd").Text = "tcode"
SAPsession.findById("wnd[0]").sendVKey 0
'run the script(skip)
SAPsession.findById("wnd[0]/usr/ctxtWERKS-LOW").Text = Cells(1, 2)......
'execute
SAPsession.findById("wnd[0]/tbar[1]/btn[8]").press
'show list
SAPsession.findById("wnd[0]/tbar[1]/btn[48]").press
'export
SAPsession.findById("wnd[0]/mbar/menu[0]/menu[1]/menu[1]").Select
'↑ just select export>as worksheet and open the file dailog....
这是我用来从 SAP 保存的代码 - 元素的确切路径
(例如 "wnd[1]/usr/ctxtDY_PATH"
)将与您的情况不同,因为它取决于您使用的表:
SAPsession.findById("wnd[1]/tbar[0]/btn[0]").press
SAPsession.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Downloads\"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "Downloaded_file_name"
SAPsession.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 13
SAPsession.findById("wnd[1]/tbar[0]/btn[11]").press
这会执行以下操作:
- 点击保存按钮
- 指定要保存文件的所需文件路径
- 指定想要的文件名
- 定位光标并按保存
据我所知,完全绕过保存对话框是不可能的。