SAP IE03设备附件下载脚本优化:跳过无附件设备
SAP IE03设备附件下载VBA脚本优化:跳过无附件设备
原脚本在处理无附件的设备时,会因执行session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_VIEW_ATTA"报错中断循环。通过添加错误捕获机制,可以自动识别无附件设备并跳过后续下载步骤,保证循环持续执行。
修改后的完整脚本
Private Sub CommandButton1_Click() ' 定义变量 Dim SapGuiAuto, Application, Connection, session As Object Set SapGuiAuto = GetObject("SAPGUI") Set Application = SapGuiAuto.GetScriptingEngine Set Connection = Application.Children(0) Set session = Connection.Children(0) Dim i, start_line, finish_line As Integer start_line = 64 finish_line = 364 ' 开始处理循环 For i = start_line To finish_line session.findById("wnd[0]").maximize session.findById("wnd[0]/tbar[0]/okcd").Text = "/NIE03" session.findById("wnd[0]").sendVKey 0 session.findById("wnd[0]/usr/ctxtRM63E-EQUNR").Text = Cells(i, 1).Value session.findById("wnd[0]").sendVKey 0 session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX" ' 启用错误捕获,处理无附件情况 On Error Resume Next session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_VIEW_ATTA" If Err.Number <> 0 Then ' 标记无附件,清理窗口并继续下一个设备 Cells(i, 5).Value = "无附件 " & Now() session.findById("wnd[0]").sendVKey 12 On Error GoTo 0 ' 重置错误处理 GoTo NextDevice ' 跳转到循环末尾 End If On Error GoTo 0 ' 重置错误处理 ' 正常下载附件流程 session.findById("wnd[1]/usr/cntlCONTAINER_0100/shellcont/shell").selectedRows = "0" session.findById("wnd[1]/usr/cntlCONTAINER_0100/shellcont/shell").pressToolbarButton "%ATTA_EXPORT" session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "C:\Users\GGC8045\OneDrive - MDLZ\desktop\Chicago 8364\DOCUMENTS" session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = Cells(i, 1).Value session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 8 session.findById("wnd[1]/tbar[0]/btn[0]").press session.findById("wnd[1]/tbar[0]/btn[12]").press session.findById("wnd[0]").sendVKey 12 session.findById("wnd[0]").sendVKey 12 Cells(i, 5).Value = "已下载 " & Now() NextDevice: ' 循环跳转标记 Next i End Sub
关键修改说明
- 错误捕获启用:在执行打开附件列表的代码前添加
On Error Resume Next,让脚本遇到错误时不中断,继续执行后续逻辑。 - 无附件判断:通过检查
Err.Number是否非零,判断当前设备无附件,标记状态后清理SAP窗口,直接进入下一次循环。 - 重置错误处理:处理完无附件逻辑后,用
On Error GoTo 0恢复默认错误处理,避免影响后续正常代码的错误识别。
内容的提问来源于stack exchange,提问作者syed jee
相关产品推荐
相关产品推荐

