2016-05-18 913 views
4

我写了一个宏,点击一个按钮后,它会通过Outlook发送一封自动发送的电子邮件。一切都运行顺利,除非我无法弄清楚如何将文件附加到电子邮件。在我看过的任何地方,将文件附加到电子邮件的示例代码都是针对静态命名文件的,因为每次发送相同的文件名时都使用相同的路径。通过VBA从excel发送电子邮件附件

如果它使它更方便,运行此宏的按钮位于我试图附加的工作簿内。我不确定打开一个Windows资源管理器窗口是否最简单,并以这种方式附加文件是最好的。

Dim objOutlook As Outlook.Application 
Dim objOutlookMsg As Outlook.MailItem 
Dim objOutlookRecip As Outlook.recipient 
Dim objOutlookAttach As Outlook.Attachment 
Dim WeekendingDate As Date 

With Worksheets("Macro Buttons") 
    WeekendingDate = Range("N2").Value 
End With 

Set objOutlook = CreateObject("Outlook.Application") 

Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 

“添加消息附件 [一些代码]

For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 
End Sub 

回答

5

你需要插入的MailItem设置的Attachments.Add代码:

With objOutlookMsg 
    Set objOutlookRecip = .Recipients.Add("[email protected]") 
    objOutlookRecip.Type = olTo 
    .Subject = "Blah " & WeekendingDate 
    .Body = "blah blah blah" 
'Add attachments to the message [some code] 
    .Attachments.Add "pathToFile" 
    For Each objOutlookRecip In .Recipients 
     objOutlookRecip.Resolve 
    Next 
    If DisplayMsg Then 
     .Display 
    Else 
     .Save 
    End If 
End With 
Set objOutlook = Nothing 

在我自己的一个脚本,我将附件集合传递给MailItem以使用Dictionary对象和以下代码进行连接:

With oMailItem 
     Set .SendUsingAccount = oOutlook.Session.Accounts.Item(iAccount) 
     .To = EmailData("To") 
     .CC = EmailData("CC") 
     .BCC = EmailData("BCC") 
     .Subject = EmailData("Subject") 
     .Body = EmailData("Body") 
     sAttachArray = Split(EmailData("AttachmentPaths"), ";") 
     For Each sAttachment In sAttachArray 
      .Attachments.Add(sAttachment) 
     Next 
     .Recipients.ResolveAll 
     .Display ' debug mode - uncomment this to see email before it's sent out 
    End With 
+0

“路径到文件”我应该把自己的路径是动态的吗?文件名称正在更改 – Davey

+0

要添加哪个文件作为附件? – Dave

+0

一个excel文件。我单击的命令按钮位于我试图附加的工作簿内部。 – Davey

相关问题