使用Excel VBA从草稿发送多个项目时出错

时间:2018-10-05 16:57:34

标签: excel vba outlook-vba mailitem

我在Excel中有一个电子邮件ID列表,并且存储了许多草稿。

我正在尝试根据草稿的主题行将特定的草稿发送到电子邮件ID列表中。

当我有多个草稿但没有一个草稿时,.copy.send行上有一个错误。

Sub eng()

    Dim lDraftItem, myOutlook, myNameSpace, myFolders, myDraftsFolder

    Set myOutlook = CreateObject("Outlook.Application")
    Set myNameSpace = myOutlook.GetNamespace("MAPI")

    myNameSpace.Logon "Outlook"

    Set myFolders = myNameSpace.Folders
    Set myDraftsFolder = myFolders("emailid@abc.com").Folders("Drafts")

    For lDraftItem = myDraftsFolder.Items.Count To 1 Step -1
        If InStr(myDraftsFolder.Items.item(lDraftItem).subject, "Subjectline") <> 0 Then

            For i = 2 To iTotalRows
                myDraftsFolder.Items.item(lDraftItem).Copy
                myDraftsFolder.Items.item(lDraftItem).SentOnBehalfOfName = "email"
                myDraftsFolder.Items.item(lDraftItem).To = "email"
                myDraftsFolder.Items.item(lDraftItem).Send
            Next

        End If
    Next lDraftItem

    Set myDraftsFolder = Nothing
    Set myNameSpace = Nothing
    Set myOutlook = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

这是一个极端的多点符号。 其次,MailItem.Copy返回新创建(复制)的项目。您将忽略返回的值。您是说以下意思吗?

set items = myDraftsFolder.Items
For lDraftItem = items.Count To 1 Step -1
    set item = items.Item(lDraftItem)
    If InStr(item.subject, "Subjectline") <> 0 Then

        For i = 2 To iTotalRows
            set newItem = item.Copy
            newItem.SentOnBehalfOfName = "email"
            newItem.To = "email"
            newItem.Send
        Next

    End If
Next lDraftItem