所以我想在 Word 文档中搜索损坏的交叉引用。我知道通常会选择所有字段,然后更新字段,所有损坏的交叉引用将是“错误!未找到参考源”。问题是我正在处理的文档非常庞大,充满了表格和数字,并且充满了样式。通常情况下,Cntl-A 只会挂起文档。
我发现始终有效的解决方法是打印为 PDF 并丢弃 PDF。
我想自动执行此操作,并且最好不实际保存 pdf 也不显示任何打印对话框。从用户的角度来看,他们会单击用户表单上的按钮,这将导致活动文档中所有损坏的引用与标准错误文本一起公开,然后可以进行搜索。
我愿意接受关于比打印到 pdf 方法更简单的建议,但考虑到底层模板的复杂性(我无法控制),我不能太依赖文档本身的元素。
所以您只想标记损坏的交叉引用以进行检查,对吧?
这个怎么样:
Sub MarkInvalidCrossReferences()
Dim ref
Dim f As Field
Dim d As Document, rng As Range
Dim cln As New VBA.Collection, ur As UndoRecord
Set ur = word.Application.UndoRecord
ur.StartCustomRecord "MarkInvalidCrossReferences"
Set d = ActiveDocument
For Each rng In d.StoryRanges
'd.Fields.Update 'More often than not Cntl-A will just end up hanging the document.
For Each f In rng.Fields 'd.Fields
f.Update
If f.Result = "錯誤! 尚未定義書籤。" Then 'this is my traditional Chinese version
'If f.Result = "Error! Reference source not found." Then ' yours will be this
f.Select
Selection.Range.HighlightColorIndex = wdYellow 'mark
Rem maybe you want to wait here for further OP
Rem store in a collection to further Use
cln.Add Selection.Range.Duplicate
End If
Next f
Next rng
ur.EndCustomRecord
End Sub
因为我没有这么大的文档来测试,如果问题仍然存在,那么我们会尝试以您的pdf方式进行。
问题是我正在处理的文档非常庞大,充满了表格和数字,并且充满了样式。通常情况下,Cntl-A 只会挂起文档。