我在Outlook的草稿文件夾中有一百封郵件。我想把它們全部發送出去。Outlook VBA:如何從草稿文件夾發送電子郵件?
我在這裏有一個代碼,發送郵件從除了一封郵件(這是最後一封郵件)的草稿文件夾。程序讀取的最後一封郵件遇到以下錯誤:
「運行時錯誤'440': 數組索引超出範圍」。
你認爲什麼人?非常感謝。
For i = 1 To myFolder.Items.Count
myFolder.Items(i).Send
Next
我在Outlook的草稿文件夾中有一百封郵件。我想把它們全部發送出去。Outlook VBA:如何從草稿文件夾發送電子郵件?
我在這裏有一個代碼,發送郵件從除了一封郵件(這是最後一封郵件)的草稿文件夾。程序讀取的最後一封郵件遇到以下錯誤:
「運行時錯誤'440': 數組索引超出範圍」。
你認爲什麼人?非常感謝。
For i = 1 To myFolder.Items.Count
myFolder.Items(i).Send
Next
您將遇到了問題,如果你有一個遞增計數器修改環路內的文件夾。
一種可能的解決辦法是將循環收集向後,即:
For i = myFolder.Items.Count To 1 Step -1
myFolder.Items(i).Send
Next
正如SKYMASTER提到的,陣列是1-索引。
Items集合的索引從1開始,並且Items集合對象中的項不保證爲任何特定的順序。
https://msdn.microsoft.com/en-us/library/office/ff863652.aspx
編輯: 又見緊湊的Outlook數據文件: https://support.office.com/en-nz/article/Reduce-the-size-of-Outlook-Data-Files-pst-and-ost-e4c6a4f1-d39c-47dc-a4fa-abe96dc8c7ef
在發送每份草稿時,文件夾中只有一個電子郵件。下一封電子郵件將成爲該集合中的第一個。所以當你循環時,你可以繼續發送消息folder.Items(1)
。
我已經安裝在工作中有些用戶代碼(他們有一個鏈接到他們的帳戶的多個郵箱):
Sub SendAllYourMailboxDrafts()
SendAllDrafts "your-mailbox-name"
End Sub
Sub SendAllDrafts(mailbox As String)
Dim folder As MAPIFolder
Dim msg As Outlook.MailItem
Dim count As Integer
Set folder = Outlook.GetNamespace("MAPI").Folders(mailbox)
Set folder = folder.Folders("Drafts")
If MsgBox("Are you sure you want to send the " & folder.Items.count & " items in your " & mailbox & " Drafts folder?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub
count = 0
Do While folder.Items.count > 0
Set msg = folder.Items(1)
msg.Send
count = count + 1
Loop
MsgBox count & " message(s) sent", vbInformation + vbOKOnly
End Sub
太棒了。謝謝@DanL。感謝你的幫助。 – bigbryan