Axe*_*iot 1 error-handling vba
在Excel VBA中,我打开一个Word应用程序和一个doc.我想确保文档和Word最后都关闭,即使出现错误.
我创建了一个错误处理程序On Error GoTo ErrorHandler,它有效.但是objDoc.Close当没有打开文档时运行失败(运行时错误424),objWord.Quit尽管我打电话,Sub也被中止了On Error Resume Next.
为什么On Error Resume Next不在那里工作?
(在VBA选项中,错误陷阱设置为"中断未处理的错误".)
Sub test()
On Error GoTo ErrorHandler
' Open doc in Word
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set objDoc = objWord.Documents.Open("not a valid doc.docx")
....
' Save and exit
objDoc.Save
objDoc.Close
objWord.Quit
Exit Sub
ErrorHandler:
MsgBox "Error " & Err.Number & vbLf & Err.Description
On Error Resume Next
' Exit
objDoc.Close SaveChanges:=False
objWord.Quit
On Error GoTo 0
End Sub
Run Code Online (Sandbox Code Playgroud)
就像@Comintern说的那样,我会这样做
Sub test()
Dim objWord As Object
Dim objDoc As Object
On Error GoTo ErrorHandler
' Open doc in Word
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set objDoc = objWord.Documents.Open("not a valid doc.docx")
ErrExit:
On Error Resume Next
objDoc.Save
objDoc.Close
objWord.Quit
Exit Sub
ErrorHandler:
MsgBox "Error " & Err.Number & vbLf & Err.Description
Resume ErrExit
End Sub
Run Code Online (Sandbox Code Playgroud)
该Resume语句使您退出错误状态并允许您重置错误陷阱.