VBA Word:Property Revision.Style不起作用

时间:2018-07-18 09:13:38

标签: vba ms-word

当我尝试在修订对象中更改某些样式(例如textcolor)时,我得到了Run-Time error '5852'(请求的对象不可用)。我用过ActiveDocument.Revisions(i).Style ...其他属性可用(作者,创建者,类型等)。顺便说一句:我真的想从修订版中更改样式(而不是普通文本)。在Word 2010和2016中进行了测试

编辑:更加详细:

我尝试更改所显示修订的颜色。 Word默认情况下自动设置它。但是您无法选择Word分配给审阅者的颜色(See this link

不幸的是,这正是我想要做的。因此,我在VBA上进行了尝试,实际上revision object可以使用属性样式,但是我得到的error 5852ActiveDocument.Revisions(i).Style

一致
Sub test()
    i = 1
    While i <= ActiveDocument.Revisions.Count
        Debug.Print "Revision " & i & " Author: " & ActiveDocument.Revisions(i).Author 'works
        Debug.Print "Revision " & i & " Creator: " & ActiveDocument.Revisions(i).Creator 'works
        Debug.Print "Revision " & i & " Date: " & ActiveDocument.Revisions(i).Date 'works
        Debug.Print "Revision " & i & " FormatDescription: " & ActiveDocument.Revisions(i).FormatDescription 'works...
        Debug.Print "Revision " & i & " Range: " & ActiveDocument.Revisions(i).Range 'work
        Debug.Print "Revision " & i & " Style: " & ActiveDocument.Revisions(i).Style 'error 5852
        Debug.Print "Revision " & i & " Type: " & ActiveDocument.Revisions(i).Type 'works
        i = i + 1
    Wend
End Sub

有人知道为什么会发生此错误吗?

1 个答案:

答案 0 :(得分:0)

正如您所说,不可能为每个作者显式设置修订的颜色。 不可能是不可能的。

我认为Revisions.Style不是 ,用于更改修订版的外观(颜色或其他内容)。我相信这是要返回Style信息,例如样式的名称和各种属性(类似于Range.Style的属性)。错误是因为Word尚未记录此类信息,可能是因为它无法识别相关的样式类型...

有两个相关的(?)Revision.Type枚举:wdRevisionStylewdRevisionStyleDefinition。在快速测试中-使用样式进行格式化,创建样式并更改样式定义-我无法返回这两个修订类型中的任何一个。但是根据《语言参考》,它们的意思是:

  

wdRevisionStyle 8样式已更改。
  wdRevisionStyleDefinition 13样式定义已更改。

在我的测试中,为应用样式而返回的修订版本类型为wdRevisionParagraphProperty,并且更改样式定义未记录为修订版本。

为了让Revision.Style返回信息,我相信您需要测试Revision.Type是否为上述任何一个,只有这样,Revision.Style中才会有一个有效的对象。

我正在查看Word 2010。