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

Error while sending multiple items from the drafts using Excel VBA

我在 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

这是一种极端的多点表示法。 其次,MailItem.Copy returns 新创建(复制)的项目。您忽略了返回值。您是指以下内容吗?

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