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