当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
发表评论