簡體   English   中英

Word VBA查找/替換問題

[英]Word VBA Find/Replace Issue

在Word中使用VBA查找和替換時,我遇到的問題是,例如,如果我嘗試將所有“ John(space)Smith”實例替換為“ John(non-breaking space)Smith”,則Find Replace函數會替換所有“ John(space)Smith”以及所有“ John(non-breaking space)Smith”和所有“ John(non-breaking space)Smith”。 在我使用它並留下曲目更改之前,我真的不希望它用它自己替換。 我嘗試使用Chr(32)僅選擇空間,但仍然無濟於事。 (我只是在這里指出,我不是在字面上寫(空格)和(不間斷空格),而只是象征着空格和不間斷空格的位置)

看起來,查找/替換在進行查找時不會區分空格和不間斷空格。 我以相反的方向嘗試了它,但是效果很好(不間斷地尋找和替換空間)。 因此,我的理論是,對於查找/替換,將不間斷的空間視為一個空間,但將一個空間不視為不間斷的空間。 知道這一點,任何人都可以提供解決方案來解決這個問題嗎? 我可以以某種方式遍歷文檔並找到“ John(space)Smith”的實例並進行相應替換嗎? 循環方法應該避免這個問題,但是我不確定如何實現。

ActiveDocument.Range.Select

strFind = "John" & Chr(32) & "Smith"
strReplace = "John" & Chr(202) & "Smith" 'note the chr(202) is because i am working on a mac. 160 on pc i believe

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
 .Text = strFind
 .Replacement.Text = strReplace
 .Forward = True
 .Wrap = wdFindAsk
 .Format = True
 .MatchCase = False
 .MatchWholeWord = False
 .MatchWildcards = False
 .MatchSoundsLike = False
 .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

謝謝,

卡梅倫

您需要使用通配符。 因此,將相應的行更改為以下幾行:

strFind = "(John)( )(Smith)"
strReplace = "\1^s\3"      'for Win, and for Mac try: "\1" & chr(202) & "\3"

並將此行設置為true:

.MatchWildcards = True

有關更多信息,請參見此鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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