我正在编写一个函数,该函数遍历工作表的所有已用单元格,并替换其他人的字符(文件来自提取,并且有一些不需要的字符)。
这是:
Sub replaceSpecialCharacters()
Dim Cell As Range
For Each Cell In ActiveSheet.UsedRange
Cell.Value = Replace(Cell.Value, "Õ", "ä")
Cell.Value = Replace(Cell.Value, "³", "ü")
Cell.Value = Replace(Cell.Value, "÷", "ö")
Cell.Value = Replace(Cell.Value, Chr(111), "Ä")
Cell.Value = Replace(Cell.Value, Chr(220), "Ü")
Cell.Value = Replace(Cell.Value, "Í", "Ö")
Cell.Value = Replace(Cell.Value, "Ó", "à")
Cell.Value = Replace(Cell.Value, "Ú", "é")
Cell.Value = Replace(Cell.Value, "Þ", "è")
Cell.Value = Replace(Cell.Value, "Ô", "â")
Cell.Value = Replace(Cell.Value, "¶", "ô")
Cell.Value = Replace(Cell.Value, Chr(194), "Â")
Cell.Value = Replace(Cell.Value, Chr(200), "È")
Cell.Value = Replace(Cell.Value, Chr(202), "Ê")
Cell.Value = Replace(Cell.Value, "Ù", "œ")
Next
End Sub
它有点慢,但效果很好。我的问题是我找不到替换Ascii“box characters”的方法(my,┬,╚和我的情况下的╩)。
我尝试使用Chr()函数将Ascii字符放在vba代码中,但Excel Ascii字符集似乎没有我想要的那些。
在互联网上搜索Ascii字符代码时,我发现this list有“框字符”,但它与Ascii字符的Excel列表不对应(您可以在“插入”标签中找到它 - >符号)。
有人知道是否有办法在VBA代码中找到这些“盒子字符”?
答案 0 :(得分:1)
以下代码将把登录A1的代码放入A2
Cells(2,1).Value = AscW(Cells(1,1).Value)
对于,这将是9604。
您可以在替换中使用此代码,如下所示:
Cell.Value = Replace(Cell.Value, ChrW(9604), "Â")
编辑:来自@Tom Blodget的一些信息发表评论:
了解VBA使用UTF-16编码非常重要 Unicode字符集。 AscW和ChrW处理一个UTF-16代码 单元。
(Asc和Chr导致UTF-16与用户之间的转码 代码执行时的ANSI字符编码,而不是ASCII。)