VBA:替换功能对字符串不起作用......?

时间:2014-02-26 14:08:56

标签: vba email outlook

我真的很困惑。这个脚本应该逐行解析选定的邮件。这些邮件当然不总是纯文本,但有时是格式化文本。该脚本适用于纯文本文件,但使用邮件替换不起作用。为什么呢?

邮件中的数据由空格分隔(从1到5) 即。

     24 month
5/1 5/2 5/3 5/4
20    50    30    20

然而,当我单步执行代码时,替换没有任何效果,字符串长度保持不变。

这是我的解析脚本的一部分:

Dim varCurrentLine As Variant
Dim strCurrentLine As String
Dim astrLines() As String
Dim astrCurrentLine() As String

astrLines = Split(myMail.Body, vbCrLf)

For Each varCurrentLine In astrLines
    strCurrentLine = CStr(varCurrentLine)

    If (InStr(1, strCurrentLine, "24 Month")) Then boolStartParsing = True

    If (boolStartParsing) Then
        strCurrentLine = Replace(strCurrentLine, "         ", " ")
        strCurrentLine = Replace(strCurrentLine, "        ", " ")
        strCurrentLine = Replace(strCurrentLine, "       ", " ")
        strCurrentLine = Replace(strCurrentLine, "      ", " ")
        strCurrentLine = Replace(strCurrentLine, "     ", " ")
        strCurrentLine = Replace(strCurrentLine, "    ", " ")
        strCurrentLine = Replace(strCurrentLine, "   ", " ")
        strCurrentLine = Replace(strCurrentLine, "  ", " ")

        If (Len(strCurrentLine) > 0) Then
            astrCurrentLine = Split(strCurrentLine, " ")

            'Parsin code omitted

        End If
    End If
Next varCurrentLine

2 个答案:

答案 0 :(得分:0)

这当然让我觉得你用来比较邮件文本中的空格的空格不匹配。

答案 1 :(得分:0)

在Google上找到此链接:

http://dmcritchie.mvps.org/excel/join.htm#trimall

您的“空格”可能是“非破坏空格字符”,在VBA中为CHR(160)

您还可以使用while循环来清理代码:

While InStr(strCurrentLine, Chr(32) & Chr(32)) > 0 _
    Or InStr(strCurrentLine, Chr(160) & Chr(160)) > 0

    strCurrentLine = Replace(strCurrentLine, Chr(32) & Chr(32), Chr(32))
    strCurrentLine = Replace(strCurrentLine, Chr(160) & Chr(160), Chr(32))
Wend