Excel VBA从SAP中提取数据的通用方法
有人知道如何使用VBA从SAP Netweaver提取数据吗 我有许多每日报告需要将数据从SAP导出到Excel并将其格式化为报告。我已经编写了执行格式化的VBA宏。我必须手动提取数据并单独运行每个报表宏。如果我的宏可以直接进入SAP,为report#1获取数据,格式化数据,为report#2获取数据,等等,那么就可以节省很多时间Excel VBA从SAP中提取数据的通用方法,excel,vba,netweaver,Excel,Vba,Netweaver,有人知道如何使用VBA从SAP Netweaver提取数据吗 我有许多每日报告需要将数据从SAP导出到Excel并将其格式化为报告。我已经编写了执行格式化的VBA宏。我必须手动提取数据并单独运行每个报表宏。如果我的宏可以直接进入SAP,为report#1获取数据,格式化数据,为report#2获取数据,等等,那么就可以节省很多时间 我使用SAP NetWeaver(730版,7300.1.3.1079版)。这些报告只是Excel数据透视表和图表。这一切都取决于您对SAP系统的访问方式。导出数据的
我使用SAP NetWeaver(730版,7300.1.3.1079版)。这些报告只是Excel数据透视表和图表。这一切都取决于您对SAP系统的访问方式。导出数据的ABAP程序和/或宏可以调用以直接获取数据或让SAP创建文件的RFC可能是最好的 但是,通常情况下,寻求此类答案的人都在寻找一种即时解决方案,该解决方案不需要IT部门花费数月时间定制SAP系统 在这种情况下,您可能需要使用SAP GUI脚本。SAP GUI脚本允许您以与自动化Excel大致相同的方式自动化Windows SAP GUI。事实上,您可以直接从Excel宏调用SAP GUI。多读一读。SAP GUI有一个宏记录工具,与Excel非常相似。它在VBScript中记录宏,VBScript与Excel VBA几乎相同,通常可以直接复制并粘贴到Excel宏中 示例代码 下面是一个基于我可以访问的SAP系统的简单示例
Public Sub SimpleSAPExport()
Set SapGuiAuto = GetObject("SAPGUI") 'Get the SAP GUI Scripting object
Set SAPApp = SapGuiAuto.GetScriptingEngine 'Get the currently running SAP GUI
Set SAPCon = SAPApp.Children(0) 'Get the first system that is currently connected
Set session = SAPCon.Children(0) 'Get the first session (window) on that connection
'Start the transaction to view a table
session.StartTransaction "SE16"
'Select table T001
session.findById("wnd[0]/usr/ctxtDATABROWSE-TABLENAME").Text = "T001"
session.findById("wnd[0]/tbar[1]/btn[7]").Press
'Set our selection criteria
session.findById("wnd[0]/usr/txtMAX_SEL").text = "2"
session.findById("wnd[0]/tbar[1]/btn[8]").press
'Click the export to file button
session.findById("wnd[0]/tbar[1]/btn[45]").press
'Choose the export format
session.findById("wnd[1]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[1,0]").select
session.findById("wnd[1]/tbar[0]/btn[0]").press
'Choose the export filename
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "test.txt"
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\Temp\"
'Export the file
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub
脚本录制
要帮助查找诸如wnd[1]/tbar[0]/btn[0]
等元素的名称,可以使用脚本录制。
单击“自定义本地布局”按钮,它可能看起来有点像:
然后找到脚本录制和播放菜单项。
在其中,
More
按钮允许您查看/更改录制VB脚本的文件。输出格式有点混乱,它记录了诸如选择文本、在文本字段内单击等内容
编辑:早期和晚期绑定
如果将提供的脚本直接复制到VBA宏中,则该脚本应能正常工作。它使用后期绑定,行Set SapGuiAuto=GetObject(“SAPGUI”)
定义SapGuiAuto对象
但是,如果希望使用早期绑定,以便VBA编辑器可以显示所使用对象的属性和方法,则需要在SAP GUI安装文件夹中添加对
sapfewse.ocx
的引用。您不指定从中导出数据的产品(SAP是一家提供数以百万计产品的公司——你在说哪一种?)。您没有指定格式设置所基于的报表或报表技术。如果没有更多信息,很难回答此问题。我认为这可能会对SAP连接或整篇文章有所帮助。谢谢!今天我将对脚本录制进行一些尝试。对于我正在尝试的内容,这听起来是最好的选择(尤其是因为与我合作的SAP DB由客户所有,他们的IT部门不会代表我做任何事情)。您提供的指向SAP GUI脚本页面的链接有很多关于编写脚本的信息,但我找不到有关如何使用VBA调用SAP GUI的任何信息。我假设我不能逐字复制/粘贴脚本。是否应该启用特定的参考库?是否需要声明SapGuiAuto之类的变量?您应该能够复制e脚本逐字逐句。脚本正在使用后期绑定。我将编辑答案,并提供有关早期和后期绑定的详细信息。我发现并修复了代码中的一个打字错误,该错误会阻止脚本运行。有趣的是,没有人对此发表评论:)这是另一个很好的页面,显示了如何启用脚本录制和播放菜单项。