首页 > 解决方案 > 通过宏更新 [样式] 以匹配字符样式上的选择选项

问题描述

我遇到了一些在应用时不反映样式更改的字符样式问题(这并不总是发生):示例:我有一个斜体字符样式,当我应用字符样式时,单词仍然显示为正常(但应用了 char 样式,并检查了属性,该样式的斜体检查 ok)。
为了解决这个问题,我选择了有问题的单词,右键单击样式并使用选项“更新 [样式名称] 以匹配选择”,它会正确显示斜体。

这里的问题是,当我尝试使用 VBA 宏(通过录制宏)复制此行为时,Word 编写的宏出现此错误:运行时错误“5900”:字符样式不允许该属性。这是有错误的行:

ActiveDocument.Styles("StyleItalic").AutomaticallyUpdate = False

查看通过宏创建的代码,似乎无法自动更新字符样式。

字符样式也是通过宏创建的,我看不出样式有什么问题:

Private Sub Creo(style As String, fontName As String, fontSize As Integer, hasItalic As Boolean)
        On Error Resume Next
        Selection.ClearFormatting
        ActiveDocument.Find.style = ActiveDocument.Styles(style)
        ActiveDocument.Find.Execute
        If ActiveDocument.Find.Found = False Then
            ActiveDocument.Styles.Add name:=style, Type:=wdStyleTypeCharacter
            ActiveDocument.Styles(style).QuickStyle = True
            ActiveDocument.Styles(style).font.Size = fontSize
            ActiveDocument.Styles(style).font.name = fontName
            ActiveDocument.Styles(style).font.Italic = hasItalic
        End If
End Sub

有没有办法来解决这个问题?希望我自己解释一下。我正在处理 1000 多页的 Word 文档,因此对于手动编辑来说这变得有点乏味。此外,有时换句话说,样式可以正常工作,但其他样式则不行。(所有单词都有段落样式和字符样式)

谢谢!

标签: vbams-word

解决方案


您的问题描述了两个不相关的问题。

  1. 应用与基础段落样式具有相同属性的字符样式将导致该属性在文本中被关闭。更新字符样式以匹配所选内容将产生与您想要的相反的效果。

    演示:在新文档中键入一段文本并应用定义为斜体的样式,例如引用或强引用。选择整个段落并按 Ctrl+I 关闭斜体。现在只选择部分文本并应用名为“强调”的字符样式。你会看到它对文本没有明显的影响。这是因为段落样式和字符样式都是斜体,相互抵消,效果与手动关闭斜体相同​​。

    现在右键单击重点并选择更新以匹配选择。选定的文本现在将是斜体,但是,正如快速样式库中的文本预览所显示的那样,强调不再是斜体。

  2. 只有段落和链接样式具有自动更新属性,这就是您尝试在字符样式上设置它时出错的原因。

推荐阅读