【问题标题】:EXCEL VBA: Ignore word document errors and read contentEXCEL VBA:忽略word文档错误并阅读内容
【发布时间】:2015-08-25 11:57:51
【问题描述】:

我正在编写 VBA 代码来读取 word 文档内容并粘贴它们 在excel表格中,一切都很好,

但是同时阅读多个word文档的一些word文档 显示错误消息,例如“Word 无法触发事件”, 由于这个程序挂断。

谁能建议一个 VBA 代码来忽略这些类型的错误并阅读 单词内容。

下面有我放置的代码。

Dim oDoc As Word.Document
Set oDoc = GetObject("D:\176013(1).doc")
str = oDoc.Content.text 
MsgBox (str)
oDoc.Close (0)

根据答案

Dim wdApp As Word.Application
Dim oDoc As Word.Document
Set wdApp = CreateObject("word.Application")
wdApp.DisplayAlerts = **** 'unable to give false here, it shows only three options wdAlertsNone, wdAlertsMessageBox, wdAlertsAll
Set oDoc = wdApp.Documents.Open("D:\176013(1).doc")
str = oDoc.Content.text
oDoc.Close (0)
wdApp.Quit False

【问题讨论】:

    标签: vba error-handling document


    【解决方案1】:

    试试

    Application.DisplayAlerts = False

    如果您使用其他应用程序对象,则必须在该对象上设置DisplayAlerts = False

    Dim app As Word.Application
    Set app = CreateObject("Word.Application")
    Dim oDoc As Word.Document
    app.DisplayAlerts = wdAlertsNone
    On Error Resume Next
    Set oDoc = app.Documents.Open("D:\176013(1).doc")
    On Error GoTo 0
    str = oDoc.Content.text 
    MsgBox (str)
    oDoc.Close (0)
    app.Quit
    

    注意:On Error Resume Next 语句是有风险的。它希望您知道跳过的错误。如果错误损坏了文档,您可能无法读取该文档的内容(在下一行),但语句 On Error GoTo 0 将错误处理重置为默认值,因此如果您在该行中收到错误,将显示错误。

    【讨论】:

    • 这是我使用的代码可以建议放置显示警报 Set oDoc = GetObject("D:\176013(1).doc") str = oDoc.Content.text MsgBox (str) oDoc .关闭 (0)
    • 如果您只是打开包含该对象的文档,Application.DisplayAlerts = False 就足够了。将它放在您的子目录的开头。
    • @dasanb 好吧,这是一种非常不干净的打开文档的方法。为什么不使用应用程序对象?我相应地编辑我的答案。
    • 我已按照您的建议使用,但“DisplayAlerts”仅显示三个选项“wdAlertsNone、wdAlertsMessageBox、wdAlertsAll”,它不接受错误。现在它抛出错误“应用程序定义或对象定义错误”。我用 wdAlertsNone
    • 哪一行高亮显示此错误? “DisplayAlerts”那个?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多