问题描述
需要您的帮助。
我有一个具有物料可用性的Excel项目表,并且存储的电子邮件地址垂直放置在预告单元中,并且在该电子邮件地址下,Y&N映射完成了项目管理器中整个样式代码。
我正在寻找一个VBA代码,该代码应针对标题单元格中提到的电子邮件地址逐一过滤数据库,并复制找到Y的表并将其作为附件发送。
解决方法
我一直使用宏来发送电子邮件,这是未编辑的代码:
Sub SendEmail(Optional ToAddresses As String,Optional CcAddresses As String,_
Optional BccAddresses As String,Optional Subject As String,_
Optional Body As String,Optional AttachFiles As Variant = False,Optional AutoSend As Boolean = False)
'Adapted from https://www.rondebruin.nl/win/s1/outlook/bmail4.htm
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = ToAddresses
.CC = CcAddresses
.Bcc = BccAddresses
.Subject = Subject
If Body Like "*</*>*" Then
.HtmlBody = Body
Else
.Body = Body
End If
If Not AttachFiles = False Then
If IsArray(AttachFiles) Then
For x = LBound(AttachFiles) To UBound(AttachFiles)
.Attachments.Add (AttachFiles(x))
Next
Else
.Attachments.Add (AttachFiles)
End If
End If
If AutoSend = True Then
.Send
Else
.Display
End If
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
由于浏览器出现问题(抱歉),我看不到您的屏幕截图,但希望这会有所帮助,因为在您在另一个子循环中的某个时刻,您可以执行以下操作;
Call SendEmail (ToAddresses:= "someone@example.com; someoneelse@exmpl.com",_
Subject:="Updated SOH",_
Attachfiles:="c:/Users/Me/Documents/Myfile.txt",_
Autosend:=True)
有关sub用法的一些说明:
- 所有参数都是可选的
- 收件人,抄送和密件抄送地址是字符串,如果要在任何这些字段中使用多个地址,只需用分号将它们分开,就像普通电子邮件一样。
-
Subject
和Body
也是字符串。正文可以是HTML或纯文本,它将检测到哪个。 -
Attachfiles
必须是字符串或一维字符串数组(如果附加多个文件)。它应该是完整的文件名,包括路径-参见我上面给出的示例。 - 如果
AutoSend
是True
,则电子邮件将在您不曾看到的情况下发送(除非出现错误,例如您没有输入有效的地址来发送)。如果它是False
(默认为TRY_CONVERT
),它将显示给您电子邮件,您可以在点击发送按钮之前对其进行编辑。
希望能帮助您或任何人阅读本文!我发现这对我自己真的很有用,而且没有理由不应该让其他人不受益-无论如何,根据我从在线来源改编的代码中的第一条评论。