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