You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

关键修改说明

  1. 错误捕获启用:在执行打开附件列表的代码前添加On Error Resume Next,让脚本遇到错误时不中断,继续执行后续逻辑。
  2. 无附件判断:通过检查Err.Number是否非零,判断当前设备无附件,标记状态后清理SAP窗口,直接进入下一次循环。
  3. 重置错误处理:处理完无附件逻辑后,用On Error GoTo 0恢复默认错误处理,避免影响后续正常代码的错误识别。

内容的提问来源于stack exchange,提问作者syed jee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:25:03