Word VBA批量接受修订并高亮修改内容时触发运行时错误5852的问题求助
Word VBA批量接受修订并高亮修改内容时触发运行时错误5852的问题求助
我想实现的功能是:接受文档中所有的追踪修订(tracked changes),同时高亮显示被修改过的内容——说白了就是把“追踪修订”的标记转换成高亮效果。
最开始我写了这段宏代码:
Sub AcceptChangesAndHighlight() Dim rev As Revision Dim rng As Range For Each rev In ActiveDocument.Revisions Set rng = rev.Range rng.Revisions.AcceptAll rng.HighlightColorIndex = wdPink ' Replace 'wdPink' with the appropriate color index Next rev End Sub
这段代码在大部分文档里都能正常工作,但在一份18页的较大文档里,触发了运行时错误5852:
Requested object is not available.
点击调试时,报错行指向:Set rng = rev.Range
之后我在其他论坛找到了另一段替代代码:
Sub AcceptChangesAlt() Dim tempState As Boolean tempState = ActiveDocument.TrackRevisions ActiveDocument.TrackRevisions = False Dim index As Long Dim changeRange As Range For index = ActiveDocument.Revisions.count To 1 Step -1 Set changeRange = ActiveDocument.Content changeRange.Start = ActiveDocument.Revisions(index).Range.Start changeRange.End = ActiveDocument.Revisions(index).Range.End changeRange.Revisions.AcceptAll changeRange.Font.Color = 12611584 ' Set font color (change as needed) Next ActiveDocument.TrackRevisions = tempState End Sub
结果还是触发了同样的错误,调试时报错行指向:changeRange.Start = ActiveDocument.Revisions(index).Range.Start
我又自己调整了一版代码:
Sub accept_changes() tempState = ActiveDocument.TrackRevisions ActiveDocument.TrackRevisions = False Dim index As Long, Change As Range For index = ActiveDocument.Revisions.Count To 1 Step -1 Set Change = ActiveDocument.Revisions(index).Range Change.Revisions.AcceptAll Change.Font.Color = 12611584 Next ActiveDocument.TrackRevisions = tempState End Sub
依然是同样的错误,报错行指向:Set Change = ActiveDocument.Revisions(index).Range
我之前听说Zotero插件可能会导致这类宏错误,但我并没有安装这个插件。有没有人能帮我排查下问题出在哪,或者提供一个能在大文档里正常运行的解决方案?
备注:内容来源于stack exchange,提问作者greenwood45




