使用 VBA 将当前 Word 文档打印为 pdf,无需保存或对话框

问题描述 投票:0回答:1

所以我想在 Word 文档中搜索损坏的交叉引用。我知道通常会选择所有字段,然后更新字段,所有损坏的交叉引用将是“错误!未找到参考源”。问题是我正在处理的文档非常庞大,充满了表格和数字,并且充满了样式。通常情况下,Cntl-A 只会挂起文档。

我发现始终有效的解决方法是打印为 PDF 并丢弃 PDF。

我想自动执行此操作,并且最好不实际保存 pdf 也不显示任何打印对话框。从用户的角度来看,他们会单击用户表单上的按钮,这将导致活动文档中所有损坏的引用与标准错误文本一起公开,然后可以进行搜索。

我愿意接受关于比打印到 pdf 方法更简单的建议,但考虑到底层模板的复杂性(我无法控制),我不能太依赖文档本身的元素。

vba pdf ms-word dialog
1个回答
0
投票

所以您只想标记损坏的交叉引用以进行检查,对吧?

这个怎么样:

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 只会挂起文档。

© www.soinside.com 2019 - 2024. All rights reserved.