我真的很困惑。这个脚本应该逐行解析选定的邮件。这些邮件当然不总是纯文本,但有时是格式化文本。该脚本适用于纯文本文件,但使用邮件替换不起作用。为什么呢?
邮件中的数据由空格分隔(从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
答案 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