在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
答案 0 :(得分:5)
这就是我要怎么做,就像@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
语句使您脱离错误状态,并允许您重置错误陷阱。