我有一个Excel电子表格,包含以下5列:
- 发票号码,2(公司,3(主要电子邮件地址,4(次要电子邮件地址,5(帐号
我还有一个包含发票的文件夹。每张发票的文件名中都有发票编号,即Inv_12346.pdf
我想建立一个excel宏,当我提供发票号码列表时,它将:
- 打开电子邮件--收件人:<主要联系人,抄送:<次要联系人,以及密件抄送:<我
- 在主题中输入发票编号,以及
- 转到包含发票的文件夹,并附上名为InvNo_*.pdf的相应发票,即InvNo_123456.pdf
对于每个发票编号重复此操作,并显示电子邮件以供查看*最初,我想显示带有附件的电子邮件,直到我确信宏按预期工作。
包含预填发票的文件夹的路径为--C: \Users\christma-2\OneDrive-OurYear2Win\Documents\Colorodet\Invoice Emails\Attachments\Invoice_*.pdf
以下是我迄今为止创建的宏。我想提取带有相应发票号码的发票,并将其附在电子邮件中。
Sub Send_Email_to_List()
Dim OL As Object, MailSendItem As Object
Dim MsgTxt As String
Set OL = CreateObject("Outlook.Application")
For Each xCell In ActiveSheet.Range(Range("C1"), Range("C" & Rows.Count).End(xlUp))
user_email = xCell.Value
user_subject = "Subject Line for the Email"
user_msg = "Thank You For Submitting this email"
Set MailSendItem = OL.CreateItem(olMailItem)
With MailSendItem
.Subject = user_subject
.Body = user_msg
.To = user_email
.CC = " "
.Bcc = "clorodet20607@aol.com"
'I need help getting the correct attachment, putting the invoice number in the subject, and cc'ing the secondary contacts
.Attachments.Add ("C:Userschristma-2OneDrive - OurYear2WinDocumentsClorodetInvoice EmailsAttachmentsW1???.pdf")
.Display
End With
Next xCell
Set OL = Nothing
End Sub
查找相应联系人的电子邮件地址--收件人:<主要联系人,抄送:<次要联系人,以及密件抄送:<我,
您可以使用CreateRecipient方法创建Recipient
对象。收件人的姓名;它可以是表示收件人的显示名称、别名或完整SMTP电子邮件地址的字符串。因此,没有必要搜索联系人。
Sub ResolveName()
Dim myNamespace As Outlook.NameSpace
Dim myRecipient As Outlook.Recipient
Dim CalendarFolder As Outlook.Folder
Set myNamespace = Application.GetNamespace("MAPI")
Set myRecipient = myNamespace.CreateRecipient("Eugene Astafiev")
myRecipient.Resolve
If myRecipient.Resolved Then
Call ShowCalendar(myNamespace, myRecipient)
End If
End Sub
Sub ShowCalendar(myNamespace, myRecipient)
Dim CalendarFolder As Folder
Set CalendarFolder = myNamespace.GetSharedDefaultFolder(myRecipient, olFolderCalendar)
CalendarFolder.Display
End Sub
您可以使用以下调用序列来获得Contact
实例:
recipient.AddressEntry.GetContact()
Outlook对象模型支持自定义邮件正文的三种主要方式:
- Body属性返回或设置一个字符串,表示Outlook项目的明文正文
MailItem
类的HTMLBody属性返回或设置表示指定项的HTML正文的字符串。设置HTMLBody
属性将始终立即更新Body属性。例如:
Sub CreateHTMLMail()
'Creates a new e-mail item and modifies its properties.
Dim objMail As Outlook.MailItem
'Create e-mail item
Set objMail = Application.CreateItem(olMailItem)
With objMail
'Set body format to HTML
.BodyFormat = olFormatHTML
.HTMLBody = "<HTML><BODY>Enter the message <a href="http://google.com">text</a> here. </BODY></HTML>"
.Display
End With
End Sub
- Word对象模型可用于处理消息体。有关详细信息,请参阅第17章:使用项目机构
注意,MailItem.BodyFormat属性允许您以编程方式更改用于项正文的编辑器。