替换字符串

时间:2017-11-21 23:30:27

标签: excel excel-vba character-encoding vb6 vba

我正在尝试将Excel文件转换为SQL查询。我的问题是我给出的文件中有特殊字符。我无法将它们替换为CTRL + H,因为它们根本不显示在Excel文件中。当我写我的查询(在utf8或ANSI中),他们显示。使用Ultra-Edit,它们显示为HEX C2 92.使用utf8中的Notepad ++,它们显示为PU2。在ANSI中,它们显示为''。我怀疑这是一个撇号。顺便说一句,这是法国文件。

到目前为止,我试图将它放在一个字符串中并执行这些操作,但没有任何效果。

Dim Line as String

Line = Wb.Worksheets(1).Cells(LineNo, ColNo)

Line = Replace(Line, "Â’", "''")
Line = Replace(Line, "’", "''")
Line = Replace(Line, "Â", "''")
Line = Replace(Line, Chr(194) & Chr(146), "''") 'decimal value of C2 92
Line = Replace(Line, Chr(146) & Chr(194), "''") 'inverted decimal value of C2 92

谢谢!

1 个答案:

答案 0 :(得分:3)

不要试图消除各种垃圾字符,而是要专注于保留好的字符。假设我们知道有效字符是大写和小写字母,数字和下划线。这段代码只保留好的代码:

Public Function KeepOnlyGood(s As String) As String
    Dim CH As String, L As Long, i As Long
    KeepOnlyGood = ""
    L = Len(s)
        For i = 1 To L
        CH = Mid(s, i, 1)
        If CH Like "[0-9a-zA-Z]" Or CH = "_" Then
            KeepOnlyGood = KeepOnlyGood & CH
        End If
    Next i
End Function

enter image description here

如果你想用空格替换垃圾,可以修改代码来做到这一点。