在Excel VBA,我打开一个Word应用程序和文档中。我想,以确保文档和Word在年底被关闭,即使有错误。
我创建了On Error GoTo ErrorHandler
的错误处理程序,即工作。但是,当文档没有打开(运行时错误424),虽然我叫objDoc.Close
分被objWord.Quit
之前中止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
这是我会怎么做,像@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
这Resume
声明让你出错误的状态,并允许您重置错误陷阱。