如何替换Excel工作表中的框字符?

时间:2018-02-23 10:44:50

标签: excel vba excel-vba ascii

我正在编写一个函数,该函数遍历工作表的所有已用单元格,并替换其他人的字符(文件来自提取,并且有一些不需要的字符)。

这是:

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代码中找到这些“盒子字符”?

1 个答案:

答案 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。)