0

我正在查找从电子邮件正文的 Split() 创建的数组,以查找空格 (" ") 以忽略它们。

我试过 array(i) = " " 和 srtComp (array(i), " ", vbTextCompare)。在调试模式下,我看到数组元素确实是“”,但它无法识别它。现在我正在尝试使用正则表达式,我的代码如下所示:

    Set reg = New RegExp
With reg
    .IgnoreCase = True
    .Global = True
    .Pattern = " +"
End With

'~~> Write to excel
With oXLws
    '
    strBody = Split(olMail.Body)

    For i = 0 To UBound(strBody)

        If strBody(i) Like "*Hora:*" Then

            i = i + 1
            Set MyMatches = reg.Execute(strBody(i))

            While MyMatches.Count <> 0
                i = i + 1
                Set MyMatches = reg.Execute(strBody(i))
            Wend

            .Range("B" & lRow).Value = strBody(i + 1)
            i = i + 1

        End If

    Next i

    '
End With

MyMatches.Count <> 0 条件也不起作用,它永远不会进入 cicle。谁能看到我做错了什么?提前致谢。

4

1 回答 1

0

不可打印的字符并不总是空格(ASCII 32)。如果它来自 HTML 电子邮件,它可能是 ASCII 160。试试这个 sub 看看你的单个字符数组元素是什么,然后你就会知道要寻找什么。您必须弄清楚如何设置 olMail,但我假设您已经这样做了。

Sub TestWhiteSpace()

    Dim olMail As Outlook.MailItem
    Dim vaBody As Variant
    Dim i As Long

    vaBody = Split(olMail.Body, Space(1))

    For i = LBound(vaBody) To UBound(vaBody)
        If Len(vaBody(i)) = 1 Then
            Debug.Print i, Chr$(vaBody(i)), vaBody(i)
        End If
    Next i

End Sub
于 2013-10-20T16:34:16.193 回答