在Excel中通过Excel VBA打开新邮件

我每天都在处理每日报道。 这是非常耗时的。 基本上我需要发送电子邮件,其中包含昨天销售与上周和下个月销售的简要比较。 这工作得很好。 完成后,邮件将粘贴到新工作表中,然后我必须将其复制并粘贴到Outlook中的新电子邮件中。

是否有可能创build将在Outlook中打开新邮件的macros 所以我可以插入我的文字。 我能够写macros,将直接从Excel发送它,但这不是我真正想要的报告的一部分必须通过手动查看数字来完成。

提前谢谢了!

要将ActiveWorbook作为附件添加,请执行以下操作:

  1. 将它保存到一个特定的位置
  2. Use Attachments.Add从1的位置添加文件

 Sub CustomMailMessage() Dim strFile As String Dim OutApp As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Recipient Dim Recipients As Recipients Set OutApp = CreateObject("Outlook.Application") Set objOutlookMsg = OutApp.CreateItem(olMailItem) strFile = "C:\temp\myfile.xlsx" ActiveWorkbook.SaveAs strFile Set Recipients = objOutlookMsg.Recipients Set objOutlookRecip = Recipients.Add("alias@domain.com") objOutlookRecip.Type = 1 With objOutlookMsg .SentOnBehalfOfName = "sales@domain.com" .Subject = "Testing this macro" .HTMLBody = "Testing this macro" & vbCrLf & vbCrLf 'Resolve each Recipient's name. For Each objOutlookRecip In objOutlookMsg.Recipients objOutlookRecip.Resolve Next .Attachments.Add strFile .display End With 'objOutlookMsg.Send Set OutApp = Nothing End Sub 

我现在不能testing它,但它会像这样:

 set o = createObject("Outlook.Application") set m = o.CreateItem(olMailItem) ' replace it with 0 if you get error here o.show ' or .Display - not sure 

显示之前,您可以设置o.To,o.Subject等。 对不起,它没有testing,但我没有在我的家用电脑的Outlook,我只在工作中使用它。 如果我记得正确的话,我会明天再查。

我发现这一个,它是完美的工作!

也许只是一个额外的事情 – 是否有可能附上打开的文件作为附件?

 Sub CustomMailMessage() Dim OutApp As Outlook.Application Dim objOutlookMsg As Outlook.MailItem Dim objOutlookRecip As Recipient Dim Recipients As Recipients Set OutApp = CreateObject("Outlook.Application") Set objOutlookMsg = OutApp.CreateItem(olMailItem) Set Recipients = objOutlookMsg.Recipients Set objOutlookRecip = Recipients.Add("alias@domain.com") objOutlookRecip.Type = 1 objOutlookMsg.SentOnBehalfOfName = "sales@domain.com" objOutlookMsg.Subject = "Testing this macro" objOutlookMsg.HTMLBody = "Testing this macro" & vbCrLf & vbCrLf 'Resolve each Recipient's name. For Each objOutlookRecip In objOutlookMsg.Recipients objOutlookRecip.Resolve Next 'objOutlookMsg.Send objOutlookMsg.Display Set OutApp = Nothing End Sub