如何解决Word VBA Range.Find 更改样式
我有一个自动生成的文档。文档的每个部分都有一个描述,然后是一个句子列表,这些句子被列为不同的列表项。这非常有效。
但是,需要更改某些属于字典的单词的样式,这些单词可能出现在文本的任何位置。鉴于字典存储在数据库中,因此不能硬编码。 因此,解决方案是通过 Range.Find 来替换不同单词的样式。
当单词嵌入到句子中时,此解决方案非常有效,但当相关单词位于带项目符号的句子开头时会更改项目符号样式。
- 应该在列表项中加粗的字典词
变成
DictionaryWord 应该在列表项中加粗
然而,
- 但是,这个 DictionayWord 在没有删除“列表”样式的情况下正确加粗
我曾尝试在第一个单词之前输入一个虚拟文本,然后通过另一个 Range.Find 将其删除,但问题仍然存在于我删除虚拟文本的那一刻。
改变字典词的代码如下:
Set oRange = odoc.Content
With oRange.Find
.Replacement.ClearFormatting
.Format = True
.Forward = True
.MatchCase = True
.MatchWholeWord = True
.Wrap = wdFindContinue
Set rsdictionary = DB.OpenRecordset("qrydictionaryterms",dbOpenSnapshot)
.Replacement.Style = "Dictionary Style"
While Not rsdictionary .EOF
.Execute findtext:=rsdictionary ("CDMStereotype"),MatchCase:=True,Replace:=wdReplaceAll
rsdictionary .MoveNext
Wend
end with
对于如何解决此问题的任何建议,我将不胜感激。
解决方法
感谢所有提供答案的人,但我的代码似乎没有任何问题。
对于以后可能遇到此问题的其他人,请参阅以下说明:
问题在于 DictionaryWord 的应用样式不是基于默认段落样式,而是基于另一种样式。 Word 似乎是逐步应用样式的,它所做的第一件事是应用 DictionaryWord 样式所基于的样式(删除项目符号),然后应用DictionaryWord 样式。
对此的解决方案是将 DictionaryWord 定义为基于默认段落样式的字符样式,这样就不会先应用其他样式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。