簡體   English   中英

對象“修訂版”的方法“作者”失敗

[英]Method 'Author' of object 'Revision' failed

我需要收集所有對 Word 文檔進行修改或添加評論的作者的姓名。 我做這樣的事情:

Public Function collectAuthors() As String

    Dim cmt As Word.Comment
    Dim r As String: r = vbCr
    Dim t As String
    Dim i As Long: i = 0
    Dim rev As Word.Revision

    For Each cmt In ActiveDocument.Comments
        t = cmt.Author
        If InStr(r, vbCr & t & vbCr) = 0 Then r = r & t & vbCr
    Next cmt

    For Each rev In ActiveDocument.Revisions
        t = rev.Author
        If InStr(r, vbCr & t & vbCr) = 0 Then r = r & t & vbCr
    Next rev

    ...

最近t = rev.Author開始失敗

Run-time error '-2147467259 (80004005)':
Method 'Author' of object 'Revision' failed

這可能與文檔的大小有關。 我在 Windows 7 上使用 Word 2016,64 位版本。

我還嘗試了一個循環,其中集合的成員被顯式索引,如

t = ActiveDocument.Revisions(i).Author

它在幾次(可能是 10 次)迭代后停止。

此錯誤的原因是什么,是否可以通過不同的編碼方法消除?

或者我應該忘記這一點並從word\\document.xmlword\\comments.xml提取作者姓名?

謝謝。

最后,我直接從 XML 中讀取了作者姓名。 有幾個障礙並不困難:

  • 需要從 .docx 文件中提取相關的 XML。 我使用了 7-Zip,因為它免費且易於自動化,而且在將 XML 寫回文檔時也能很好地工作。

  • 生成的文件是 UTF-8。 VBA 不直接支持 UTF-8。

  • 需要從 XML 中提取作者姓名。 只需通過 XML 進行簡單的線性搜索即可完成此操作。 我沒有做任何 XML 解析或詞法分析。

我無法控制輸入文檔,因此無法將其分解為更易於管理的部分。 然而,直接讀取 XML 完全避開了錯誤。 最后,這比嘗試處理 RTF 要好得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM