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

如何统计Excel VBA代码执行过程中产生的错误次数?

问题根因

  • 变量命名拼写不统一:你定义的folder/format/errors变量,实际代码中用了西班牙语拼写的CARPETA/FORMATO/errores,变量不匹配导致逻辑失效
  • 没有文件存在校验和错误捕获逻辑:原代码直接调用FollowHyperlink打开文件,错误计数是每轮循环都加1,和打开成功/失败状态完全不绑定,自然无法统计失败次数

修正后可实现失败统计的代码

Sub Busqueda_MSDS()
    Windows("Excel1.xlsm").Activate
    Sheets("Sheet2").Visible = True
     
    Dim folder As String
    Dim fullPath As String
    Dim format As String
    Dim errors As Integer
    Dim i As Integer
    
    i = 2
    ' 统一变量命名,避免拼写混乱
    folder = "C:\Users\documents\pdfs\"
    format = ".pdf"
    errors = 0 ' 初始化错误计数为0
 
    Do While ThisWorkbook.Sheets("Sheet2").Range("G" & i) <> ""
        fullPath = folder & ThisWorkbook.Sheets("Sheet2").Range("G" & i).Value & format
        
        ' 第一步:先判断文件是否存在
        If Dir(fullPath) = "" Then
            ' 文件不存在,错误计数+1
            errors = errors + 1
        Else
            ' 第二步:文件存在的情况下尝试打开,加错误捕获处理打开失败的情况
            On Error Resume Next
            ActiveWorkbook.FollowHyperlink fullPath
            If Err.Number <> 0 Then
                ' 打开失败(比如文件损坏、无权限),错误计数+1
                errors = errors + 1
                Err.Clear
            End If
            On Error GoTo 0
        End If
        
        i = i + 1
    Loop
    
    ' 统计完成后弹窗提示失败次数,你也可以根据需要把值写入指定单元格
    MsgBox "共查找失败 " & errors & " 个PDF文件"
End Sub

逻辑说明

  • 每次循环先拼接完整的PDF文件路径,调用Dir函数校验文件是否真实存在,不存在直接计入失败
  • 对存在的文件添加错误捕获机制,覆盖文件损坏、权限不足等无法打开的场景,出现异常也计入失败
  • 循环结束后弹窗返回总失败次数,你可以根据需要修改为把次数写入指定单元格、输出到日志等其他处理逻辑

内容的提问来源于stack exchange,提问作者SANTIAGO PARRA MARTINEZ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:02