Excel 从SAP GUI自动导出工作表

Excel 从SAP GUI自动导出工作表,excel,vba,sap-gui,Excel,Vba,Sap Gui,我使用vbscript通过Excel VBA运行SAP GUI,以下是我的操作: 登录 选择Tcode 提供数据并执行 导出为工作表。 我的问题是,最后一个操作(导出为工作表)将显示一个文件对话框,我需要选择路径并按。但是我想通过设置的路径和文件名自动导出,而不需要“另存为”对话框 有什么方法可以做到这一点吗 以下是我的VBA代码: Dim SAPconn As Object Dim SAPsession As Object Dim SapGuiAuto As Object Dim WshS

我使用vbscript通过Excel VBA运行SAP GUI,以下是我的操作:

  • 登录
  • 选择Tcode
  • 提供数据并执行
  • 导出为工作表。 我的问题是,最后一个操作(导出为工作表)将显示一个文件对话框,我需要选择路径并按。但是我想通过设置的路径和文件名自动导出,而不需要“另存为”对话框
有什么方法可以做到这一点吗

以下是我的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
这样做的目的如下:

  • 单击保存按钮
  • 指定要保存文件的所需文件路径
  • 指定所需的文件名
  • 定位光标并按save

据我所知,不可能完全绕过“保存”对话框。

?或者如果您的SAP GUI选项“显示Windows本机对话框”已关闭;此时将显示SAP对话框,因此您可以添加一些代码来输入其他SAP屏幕的文件路径。Sandra,我的SAP是720,我没有“显示Windows本机对话框”选项。嗨,Nick,谢谢您的回答。我使用此语法,但excel正在等待OLE。似乎我无法控制文件对话框。。。您是否在SAP或Excel中设置了一些内容?我的设置与您的类似。我使用VBA运行SAP脚本。您需要注释掉或删除代码中以
结尾的最后一行。选择
。我想您是在尝试选择文件菜单上的
导出到excel
选项吗?然后添加我答案中的行,根据需要修改表名。谢谢!我试试看。我还发现了另一个问题。当我导出excel工作表时,文件将自动打开。是否可以关闭该功能?仅保存而不打开它。使用此方法时,文件将仅保存而不打开。如果不是这样,请告诉我。嗨,尼克,成功了!正如你所说,文件没有打开。非常感谢你的帮助!!您知道如何通过脚本关闭sap登录窗口吗?(我可以关闭gui)