VBA错误处理程序:在错误恢复不会在处理工作

问题描述 投票:1回答:1

在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
vba error-handling
1个回答
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声明让你出错误的状态,并允许您重置错误陷阱。

© www.soinside.com 2019 - 2024. All rights reserved.