我有一个宏,出口的生产报告从SAP系统中XLSX格式。问题是,我需要四个这样的报告为我们的四条生产线(A,B,C & D),但当宏运行其过程中只有两个或三个打印出来(通常只是B,C,& D打印出来,但有时只是C & D)。
基本上,我正在寻找一种方法,使Excel电子表格从SAP中导出的宏,他们弹出尽快生成,而不是等到最后,并希望四个弹出。是否有某种循环或延迟允许这种情况发生?我知道SAP将它们保存到某个文件夹中,所以我知道它们是从SAP导出的,但宏执行完后它们并没有弹出。
下面是我正在运行的代码的一个示例,它将打开四个生产线的生产编号之一。我正在从Excel电子表格中提取日期,以过滤一箱或一卡车塑料的发布日期。我基本上只是重复的一部分,从'一行数据收集'另三次,这就完成了我的宏。
Sub Get_SAP()
Dim App, Connection, session As Object
Sheets("Sheet1").Select
Range("B8").Select
Selection.Copy
a_value = Range("B4").Text
b_value = Range("B5").Text
'Open Up SAP on Screen'
Set SapGuiAuto = GetObject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
Set Connection = App.Children(0)
Set session = Connection.Children(0)
session.findById("wnd[0]").maximize
'A Line Data Gathering'
'Type in /ncooispi'
session.findById("wnd[0]/tbar[0]/okcd").Text = "/ncooispi"
session.findById("wnd[0]").sendVKey 0
'Type in search parameters in Cooispi'
session.findById("wnd[0]/usr/ssub%_SUBSCREEN_TOPBLOCK:PPIO_ENTRY:1100/cmbPPIO_ENTRY_SC1100-PPIO_LISTTYP").Key = "PPIOD000"
session.findById("wnd[0]/usr/ssub%_SUBSCREEN_TOPBLOCK:PPIO_ENTRY:1100/ctxtPPIO_ENTRY_SC1100-ALV_VARIANT").SetFocus
session.findById("wnd[0]/usr/ssub%_SUBSCREEN_TOPBLOCK:PPIO_ENTRY:1100/ctxtPPIO_ENTRY_SC1100-ALV_VARIANT").Text = "BRUCE-4"
session.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_WERKS-LOW").Text = "AC55"
session.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_PARBPL-LOW").Text = "A-Extruder"
session.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_PARBPL-LOW").SetFocus
session.findById("wnd[0]/usr/tabsTABSTRIP_SELBLOCK/tabpSEL_00/ssub%_SUBSCREEN_SELBLOCK:PPIO_ENTRY:1200/ctxtS_PARBPL-LOW").caretPosition = 8
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").pressToolbarButton "&NAVIGATION_PROFILE_TOOLBAR_EXPAND"
session.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").pressToolbarContextButton "&MB_VARIANT"
session.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").selectContextMenuItem "&COL0"
session.findById("wnd[1]/usr/tabsG_TS_ALV/tabpALV_M_R3").Select
session.findById("wnd[1]/usr/tabsG_TS_ALV/tabpALV_M_R3/ssubSUB_DYN0510:SAPLSKBH:0600/cntlCONTAINER2_FILT/shellcont/shell").currentCellRow = 2
session.findById("wnd[1]/usr/tabsG_TS_ALV/tabpALV_M_R3/ssubSUB_DYN0510:SAPLSKBH:0600/cntlCONTAINER2_FILT/shellcont/shell").selectedRows = "2"
session.findById("wnd[1]/usr/tabsG_TS_ALV/tabpALV_M_R3/ssubSUB_DYN0510:SAPLSKBH:0600/btn600_BUTTON").press
session.findById("wnd[2]/usr/ssub%_SUBSCREEN_FREESEL:SAPLSSEL:1105/btn%_%%DYN003_%_APP_%-VALU_PUSH").press
session.findById("wnd[3]/usr/tabsTAB_STRIP/tabpINTL").Select
session.findById("wnd[3]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-ILOW_I[1,0]").Text = ""
session.findById("wnd[3]").sendVKey 14
session.findById("wnd[3]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").Text = ""
session.findById("wnd[3]").sendVKey 14
'Plug numbers from Excel into Posting Date Filters'
session.findById("wnd[3]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-ILOW_I[1,0]").Text = a_value
session.findById("wnd[3]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").Text = b_value
'Get A Line spreadsheet'
session.findById("wnd[3]/tbar[0]/btn[8]").press
session.findById("wnd[2]/tbar[0]/btn[0]").press
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").pressToolbarContextButton "&MB_EXPORT"
session.findById("wnd[0]/usr/cntlCUSTOM/shellcont/shell/shellcont/shell").selectContextMenuItem "&XXL" session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "ALINEPRODUCTION.XLSX"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 16
session.findById("wnd[1]/tbar[0]/btn[11]").press
Sub End
1条答案
按热度按时间bq3bfh9z1#
我将测试该文件是否已存在于目标中。
例如: