2013-10-19 66 views
0

我正在尋找一個從電子郵件正文的Split()創建的數組,用於空格(「」),以忽略它們。我試過數組(i)=「」和srtComp(數組(i),「」,vbTextCompare)。 在調試模式下,我發現數組元素確實是「」,但它不能識別它。現在我想要室內用正則表達式和我的代碼如下所示:試圖在VBA中使用正則表達式查找「​​」(office 2010)

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。 任何人都可以看到我在做什麼錯了嗎?提前致謝。

+0

我非常懷疑你在那裏出現了'i = i + 1'的次數太多。 –

回答

0

不可打印的字符並不總是空格(ASCII 32)。如果它來自HTML電子郵件,那麼它可能是ASCII 160.嘗試使用此子查看您的單個字符數組元素,然後您就會知道要查找什麼。你必須弄清楚如何設置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