2014-02-10 45 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