通过电子邮件从多个 Excel 工作表发送 PDF 文件

问题描述 投票:0回答:1
Sub Email_From_Excel()
    Dim emailApplication As Object
    Dim EmailItem As Object
    Dim strPath As String

    strPath = ActiveWorkbook.Path & Application.PathSeparator & "Sheet1.pdf"

    Worksheets("Sheet1").ExportAsFixedFormat xlTypePDF, strPath
    Set emailApplication = CreateObject("Outlook.Application")
    Set EmailItem = emailApplication.CreateItem(0)

    EmailItem.To = Range("C8")
    EmailItem.CC = Range("C9")
    EmailItem.Subject = "XXX"
    EmailItem.Body = "Please find attached XX"


    EmailItem.Attachments.Add strPath

    EmailItem.Display

    Set EmailItem = Nothing
    Set emailApplication = Nothing
 
End Sub

亲爱的网络, 我对 VBA 还是有点陌生,所以我想请教一些小技巧。

我会按名称指定各个工作表

("Sheet1", "Sheet2", "Sheet3")
,并将它们作为单个文件发送。目前,我只能通过电子邮件发送 PDF 格式的“Sheet1”。有人给我建议吗?

excel vba outlook email-attachments office-automation
1个回答
0
投票

Outlook 对象模型不提供任何在不事先将 Excel 工作表保存到磁盘的情况下发送它们的方法。无论您想通过 Outlook 发送什么内容,都必须以文件形式保存到磁盘上。只有这样您才能将此类文件附加到电子邮件中并将其发送出去。

如果您需要拆分工作表并将其与整个工作簿分开发送,您可以将它们复制到一个新工作簿中,该工作簿可以保存到磁盘并附加到电子邮件中。

Copy
方法工作表(创建一个新工作簿)和然后保存
ActiveWorkbook

Worksheets("Sheet1").Copy

例如,以下示例首先将

Sheet1
复制到新的空白工作簿,然后保存并关闭新工作簿。

Worksheets("Sheet1").Copy
With ActiveWorkbook 
     .SaveAs Filename:=Environ("TEMP") & "\New1.xlsx", FileFormat:=xlOpenXMLWorkbook
     .Close SaveChanges:=False
End With
© www.soinside.com 2019 - 2024. All rights reserved.