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”。有人给我建议吗?
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