[英]Range.Find Word VBA: finding heading with specific heading number only works if heading style is specified
[英]Word VBA Range.Find changes style
我有一個自動生成的文檔。 文檔的每個部分都有一個描述,然后是一個句子列表,這些句子被列為不同的列表項。 這完美地工作。
但是,需要更改字典中某些單詞的樣式,這些單詞可能出現在文本的任何位置。 鑒於字典存儲在數據庫中,因此無法對其進行硬編碼。 因此解決方案是通過 Range.Find 替換不同單詞的樣式。
當單詞嵌入句子中時,此解決方案非常有效,但當相關單詞位於項目符號句的開頭時,會更改項目符號樣式。
- 應在列表項中加粗的 DictionaryWord
變成
列表項中應加粗的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定義為基於默認段落樣式的 Character 樣式,這樣就不會先應用其他 styles。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.