簡體   English   中英

Word VBA Range.Find 更改樣式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM