【发布时间】:2021-12-07 22:56:20
【问题描述】:
我正在尝试构建一个 Excel VBA 脚本,该脚本通过 Excel 工作表运行并从 SAP 系统中提取报告并将它们放在特定文件夹中。 参数从 A10 和 B10 开始,它们放在 SAP 屏幕字段中,在我桌面上的文件夹中创建和下载报告。 请参阅下面的 Excel 表格示例和 SAP 屏幕的屏幕截图以及我正在使用的代码。
该脚本适用于第一个参数 A10 和 B10(它从 SAP 系统中提取报告并将其放入所需的文件夹中)但是我想循环该脚本以自动提取 A10 以下其他参数的报告和B10及以上(Loop Until ActiveCell.Value = "")
有人可以帮我解决这个问题吗?我应该在哪里以及如何放置循环?
代码:
'Declaring variables for sub procedures
Option Explicit
Public SapGuiAuto, WScript, msgcol
Public objGui As GuiApplication
Public objConn As GuiConnection
Public session As GuiSession
'Creating sub procedure
Sub SAPCustomerReport()
'Pointing object variables to SAP session
Set SapGuiAuto = GetObject("SAPGUI")
Set objGui = SapGuiAuto.GetScriptingEngine
Set objConn = objGui.Children(0)
Set session = objConn.Children(0)
Dim Vendor As String
Dim CoCo As String
Dim FolderPath As String
Dim SAPOutputLayout As String
Vendor = ActiveWorkbook.ActiveSheet.Range("A10")
CoCo = ActiveWorkbook.ActiveSheet.Range("B10")
FolderPath = ActiveWorkbook.ActiveSheet.Range("B3")
SAPOutputLayout = ActiveWorkbook.ActiveSheet.Range("B4")
'Recorded SAP Script here
session.FindById("wnd[0]").Maximize
session.FindById("wnd[0]/tbar[0]/okcd").Text = "/nFBL1N"
session.FindById("wnd[0]").SendVKey 0
session.FindById("wnd[0]/usr/chkX_SHBV").Selected = True
session.FindById("wnd[0]/usr/chkX_MERK").Selected = True
session.FindById("wnd[0]/usr/chkX_PARK").Selected = True
session.FindById("wnd[0]/usr/ctxtKD_LIFNR-LOW").Text = Vendor
session.FindById("wnd[0]/usr/ctxtKD_BUKRS-LOW").Text = CoCo
session.FindById("wnd[0]/usr/ctxtPA_VARI").Text = SAPOutputLayout
session.FindById("wnd[0]/usr/ctxtPA_VARI").SetFocus
session.FindById("wnd[0]/usr/ctxtPA_VARI").CaretPosition = 12
session.FindById("wnd[0]/tbar[1]/btn[8]").Press
session.FindById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
session.FindById("wnd[1]/usr/ctxtDY_PATH").Text = FolderPath
session.FindById("wnd[1]/usr/ctxtDY_FILENAME").Text = Vendor & CoCo & ".XLSX"
session.FindById("wnd[1]/usr/ctxtDY_FILENAME").CaretPosition = 4
session.FindById("wnd[1]/tbar[0]/btn[11]").Press
MsgBox "Script Completed."
End Sub
【问题讨论】:
标签: excel vba user-interface scripting sap-gui