vba - 通过宏更新 [样式] 以匹配字符样式上的选择选项
问题描述
我遇到了一些在应用时不反映样式更改的字符样式问题(这并不总是发生):示例:我有一个斜体字符样式,当我应用字符样式时,单词仍然显示为正常(但应用了 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 文档,因此对于手动编辑来说这变得有点乏味。此外,有时换句话说,样式可以正常工作,但其他样式则不行。(所有单词都有段落样式和字符样式)
谢谢!
解决方案
您的问题描述了两个不相关的问题。
应用与基础段落样式具有相同属性的字符样式将导致该属性在文本中被关闭。更新字符样式以匹配所选内容将产生与您想要的相反的效果。
演示:在新文档中键入一段文本并应用定义为斜体的样式,例如引用或强引用。选择整个段落并按 Ctrl+I 关闭斜体。现在只选择部分文本并应用名为“强调”的字符样式。你会看到它对文本没有明显的影响。这是因为段落样式和字符样式都是斜体,相互抵消,效果与手动关闭斜体相同。
现在右键单击重点并选择更新以匹配选择。选定的文本现在将是斜体,但是,正如快速样式库中的文本预览所显示的那样,强调不再是斜体。
- 只有段落和链接样式具有自动更新属性,这就是您尝试在字符样式上设置它时出错的原因。
推荐阅读
- kubernetes - 在 Kubernetes 上运行的 cassandra 的 velero 备份恢复
- javascript - 使用 vuex 和 getter 刷新时未加载页面
- python - 如何将 .pyd 文件与 PyInstaller 捆绑在一起?
- r - R中导入UTF-8编码的文本文件如何处理LDA主题建模
- javascript - 在弹出模式中将图像移动到中心
- sql - Spark SQL日期中月份的大写缩写形式
- javascript - 我可以在 JavaScript 中使用带有 setAttribute('class','className') 方法的 CSS 网格或 flexbox 吗?
- javascript - 如何滚动经过对象的一组像素?
- mongodb - GraphQL/MongoDB:无法删除具有唯一 _id 的数据库条目(尽管我可以使用其他过滤器删除)
- php - Zend 到 Laminas 转换模块(应用程序)无法初始化