更改修订版视图后,段落.style属性不正确

时间:2019-05-28 19:03:59

标签: vba ms-word

我正在尝试确定用户Word文档中有关修订的信息,但是当我更改修订视图时,我的VBA代码似乎未返回正确的paragraph.style属性。

据我所知,.style属性看起来像是“正在追赶”,并且在实时运行脚本时没有反映期望值,并且在打印行暂停时我确实看到了期望值在调试模式下。也许有一种方法可以确保在运行我的代码的下一行之前,使修订视图更改为“结算”?我尝试了多个DoEvents实例,但无济于事。

可以通过执行以下操作来重现我看到的行为:

  1. 创建/修改文档,使第一段为style = Heading1,第二段为style = body。
  2. 打开曲目更改并删除标题段落,然后还将部分段落修订添加到正文段落(插入或删除)。
  3. 从该文档中运行此子例程:

    Sub test()
    
        For Each rev In ActiveDocument.Revisions
            ActiveDocument.Windows(1).View.RevisionsFilter.Markup = wdRevisionsMarkupNone
            Debug.Print "STYLE: [" & rev.Range.Paragraphs(1).Style & "], TEXT: [" & rev.Range.Paragraphs(1).Range & "]"
            ActiveDocument.Windows(1).View.RevisionsFilter.Markup = wdRevisionsMarkupAll
        Next rev
    
    End Sub
    

您将看到调试打印输出将错误地显示样式或第一个修订版本的“标题1”(第二个段落中已删除的标题和修订版本)。即我认为这两个版本的样式都应显示“正文”。这是基于我在“ print.debug”行中更多地调试时暂停代码时对文档状态和修订范围的检查,以及在所有情况下均会打印的“文本”输出。

我将在这里添加,每个循环中视图更改的“侧翼”是一种有效且有用的机制,因为我的实际完整代码在此for循环中做了很多工作,因此我想要这个样式读取后,将其“原子化”并在执行读取后“还原”视图状态。最终,重点在于:即使有可能更有效地组织事物,我想做的事情也应该“起作用”。

0 个答案:

没有答案