2014-02-10 81 views
-1

我有一個元素數量未知的數組。所有到Outlook的數組元素mailitem

我想了解如何將所有數組元素插入到我要發送的電子郵件正文中。

有沒有一種方法可以引用數組的所有項目(不知道有多少元素存在)?

我的代碼是下面

Dim MyArray() As String 
Dim Msg As Object 
Dim item As Object 



Set olApp = GetObject(, "Outlook.Application") 

Set olNs = olApp.GetNamespace("MAPI") 
Set olFldr = olNs.GetDefaultFolder(olFolderInbox) 
Set olItms = olFldr.Items 

olItms.Sort "Received", False 'False = Ascending = Older to newer 


i = 0 
For Each Msg In olItms 
    If Msg.Class = olMail Then 
     If InStr(1, Msg.Subject, "1401001LS") > 0 Then 

     ReDim Preserve MyArray(i) 

     If i = 0 Then 
      MyArray(i) = "From: " & Msg.Sender & vbNewLine & "Sent: " & Msg.SentOn & vbNewLine & "To: " & Msg.To & vbNewLine & "CC: " & Msg.CC & vbNewLine & "Subject: " & Msg.Subject & vbNewLine & vbNewLine & Msg.Body 
     End If 


     If i > 0 Then 
      MyArray(i) = "From: " & Msg.Sender & vbNewLine & "Sent: " & Msg.SentOn & vbNewLine & "To: " & Msg.To & vbNewLine & "CC: " & Msg.CC & vbNewLine & "Subject: " & Msg.Subject & vbNewLine & vbNewLine & Split(Msg.Body, "From: ")(0) 
     End If 

i = i + 1 


     End If 
    End If 

Next Msg 





Unload Me 

Done.Show 

End Sub 
+0

可以通過使用UBOUND(MYARRAY) – Sorceri

+0

我找到一個數組的長度我意識到這一點,但我仍然無法找出將所有數組插入一個Msgbody的方法。 – AndroidDev

回答

1

可以循環通過使用該方法在陣列中的元素下面

Dim sContentsOfArray as string 
Dim iCnt As Integer 
For iCnt = 0 To UBound(MyArray) Step 1 
    'access the element at position iCnt and put it at the end of the string 
    sContentsOfArray = sContentsOfArray + MyArray (iCnt) 
Next iCnt 
+0

但是在這個循環中,每個元素都會覆蓋下一個元素,不是嗎? 步驟1是什麼意思? – AndroidDev

+0

否,循環遍歷數組中的每個元素。由於數組和循環是編程中的基礎,因此您需要認真閱讀,顯然您沒有把握。我並不是想要表達自己的意思,但是你以後會爲自己的一些嚴重問題設置自己的位置。 – Sorceri

+0

謝謝,夥計,我仍然在學習它。 我拿到了你的代碼,但我不確定你理解我的問題! 我已經有MyArray的元素全部設置。 現在我需要創建一個變量,它將按順序存儲所有元素。這個變量將是電子郵件的正文。 實施例:MYARRAY(0)=一月 MYARRAY(1)=二月 MYARRAY(2)=三月 VariableMsg = MYARRAY(0)&MYARRAY(1)&MYARRAY(2) 的事情是:每個代碼運行的時候,我會在數組中有不同數量的元素。 – AndroidDev