VBScript:err.clear与On error goto 0的区别

本文详细介绍了VBA中OnErrorGoto、OnErrorResumeNext及OnErrorGoto0等错误处理语句的功能与使用方法,并通过实例演示了如何利用Err.Clear清除错误属性。

On Error Goto AAA语句,即当有错误发生的时候不提示错误,即刻执行AAA标签后的语句。

On Error Resume Next 即不提示错误,直接执行错误语句的下一句。

On Error Goto 0,停止错误处理(默认情况),当有错误时会中断程序,提示错误信息并将程序停留在错误的那一句语句。

Err.Clear即清除 Err 对象的所有属性设置。

默认情况下当有错误发生的时候,中断程序,提示错误信息并将程序停留在错误的那一句语句。这时候Err.Clear是没有办法执行的。

只有当设置为On Error Goto AAAOn Error Resume Next时,由于可以执行下一句,Err.Clear才显得有价值,看下面Test和Test2:

Test执行到第二句就停下了,执行不到Err.Clear。Test2可以继续执行,可以观察错误号的变化。

Sub test()
    On Error GoTo 0
    Sheets("Sheet123").Select
    Err.Clear
End Sub
Sub test2()
    On Error Resume Next
    MsgBox Err.Number
    Sheets("Sheet123").Select
    MsgBox Err.Number
    Err.Clear
    MsgBox Err.Number
End Sub

Err.Clear消除Err属性后,可以方便我们察看那句出错。

Option Explicit On Error Resume Next Dim objWord, objFSO, objFolder, objFile Dim strFolderPath, strFindText, strReplaceText Dim doc, fileCount, successCount ' 获取用户输入的文件夹路径 strFolderPath = InputBox("C:\Users\elaina_yao\OneDrive - Edwards Lifesciences\Desktop\ED-003 0906 updated dossiers 20250616\David\0616\ED-003 DPT Notarization dossiers 20250616" & vbCrLf & "(例如: C:\Docs)", "文件夹路径") If strFolderPath = "" Then WScript.Quit ' 获取要查找的文本 strFindText = InputBox("2015", "查找内容") If strFindText = "" Then WScript.Quit ' 获取替换文本 strReplaceText = InputBox("2016", "替换内容") ' 创建Word对象 Set objWord = CreateObject("Word.Application") objWord.Visible = False ' 隐藏Word窗口 objWord.DisplayAlerts = False ' 禁用警告提示 ' 创建文件系统对象 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(strFolderPath) fileCount = 0 successCount = 0 ' 遍历文件夹中的所有文件 For Each objFile In objFolder.Files If LCase(objFSO.GetExtensionName(objFile.Name)) = "doc" Or _ LCase(objFSO.GetExtensionName(objFile.Name)) = "docx" Then fileCount = fileCount + 1 WScript.Echo "正在处理: " & objFile.Name ' 打开文档 Set doc = objWord.Documents.Open(objFile.Path) If Err.Number <> 0 Then WScript.Echo "错误: 无法打开 " & objFile.Name Err.Clear Else ' 执行全局替换 With doc.Content.Find .Text = strFindText .Replacement.Text = strReplaceText .Forward = True .Wrap = 1 ' wdFindContinue .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .Execute Replace:=2 ' wdReplaceAll End With ' 保存并关闭文档 doc.Save doc.Close successCount = successCount + 1 End If End If Next ' 清理对象 objWord.Quit Set doc = Nothing Set objWord = Nothing Set objFolder = Nothing Set objFSO = Nothing ' 显示结果 MsgBox "处理完成!" & vbCrLf & _ "总文档数: " & fileCount & vbCrLf & _ "成功处理: " & successCount, _ vbInformation, "操作结果" 请检查代码
07-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值