[英]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.xml
和word\\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.