当word 文档中即有英文引号也有中文引号,当用查找替换查找英文引号替换为空时,会把中文引号也一起替换。
这时候我们可以借助word查找替换中可以直接按照unicode编码查找字符的功能,将英文引号的unicode编码找出来,然后再在查找框中输入形如”^uXXXX”这样的查找内容,只查找英文的引号。
要找到某个字符的unicode编码,一种方法是在word中选中该字符,然后按下Alt+X组合快捷键,即可显示该字符的unicode编码。但是,在这里显示出的unicode编码并非为准确的unicode编码。
另一种方法是用vba代码获取字符的unicode编码,为了避免复制粘贴字符导致的字符歧义,可以直接用以下的vba代码逐字符输出字符的unicode编码。
Sub QQ1722187970()
Dim oRng As Range
Dim oDoc As Document
Set oDoc = Word.ActiveDocument
Set oRng = oDoc.Content
For i = 0 To oRng.End - 1
sText = oDoc.Range(i, i + 1).Text
'输出字符及其对应的字符编码
Debug.Print sText, AscW(sText)
Next i
End Sub
然后可以在立即窗口中看到输出的字符以及字符对应的字符编码,这里英文字符的字符编码为0034,所以可以在查找窗口中输入“^u0034”进行查找替换,就只会替换英文字符,不会替换中文字符了。
当然,也可以通过以下的vba代码进行查找替换:
Sub QQ1722187970()
Const wdReplaceAll = 2
Dim oRng As Range
Dim oRng1 As Range
Set oRng = Word.Selection.Range
'先判断是否有选中区域,没有选中则表示整个文档
If oRng.Start = oRng.End Then
Set oRng = Word.ActiveDocument.Content
End If
'获取要执行操作的区域的起点和终点,用于查找替换时判断是否超出了选定区域
iStart = oRng.Start
iEnd = oRng.End
Set oRng1 = oRng
With oRng1.Find
.Execute FindText:="^u0034", ReplaceWith:="", Replace:=wdReplaceAll
End With
End Sub


发表评论