使用Excel VBA在Outlook中打开新邮件

5
每天我都要处理日报,这相当耗时间。基本上,我需要发送一封电子邮件,其中包含昨天销售与上周和上月的销售简要比较。这个过程运作得很好。完成后,将消息粘贴到新的表格中,然后将其复制并粘贴到Outlook中的新邮件中。
有没有可能创建一个宏来打开Outlook中的新邮件?这样我就可以插入我的文本了。我能够编写直接从Excel发送宏,但这不是我真正想要的,因为部分报告必须手动查看数字。
非常感谢您的帮助!
3个回答

9

ActiveWorkbook作为附件添加:

  1. 将其保存到特定位置
  2. 使用Attachments.Add从第一步中的位置添加文件

代码

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

7
我找到了这一个,它完美地运作了!!!
也许只有一个额外的事情 - 有没有可能将打开的文档附加为附件?
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

1
这需要引用 Microsoft Outlook 16.0 对象库。 - Jishan

4

我现在无法测试,但它应该是这样的:

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等内容。 抱歉,这未经过测试,但我家里电脑上没有Outlook,在工作中才使用。 如果我没记错的话,明天我会检查一下。


第二行出现错误 - “对象不支持此属性或方法。” - Petrik
  • 1 你可能也想要声明一下你的变量? :)
- Siddharth Rout
我已经检查过了,应该是 o.Display。错误可能是由于Excel不知道Outlook枚举引起的(请尝试使用0代替olMailItem)。Siddhart,你是对的(感谢你帮我纠正"Add"错误),但声明变量(虽然是一种好习惯)并不是必要的,所以有人会这么做,有人则不会(我会)。 - avb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接