【问题标题】:Reply to e-mail highlighted in inbox, add a BCC to a specific e-mail, and direct replies to a certain e-mail回复收件箱中突出显示的电子邮件,向特定电子邮件添加密件抄送,并直接回复特定电子邮件
【发布时间】:2014-09-14 22:32:07
【问题描述】:

在工作中,当我们发送电子邮件时,我们必须在密件抄送字段中输入某个地址,然后单击“消息选项”并输入“直接回复:”另一个地址。

我想向功能区添加一个按钮,该按钮将: 根据我在“收件箱”窗格中突出显示的电子邮件打开回复,自动将电子邮件添加到密件抄送字段并自动将消息设置为“直接回复:”

到目前为止,我想出了这个:

Sub ReplyUW()
Dim mail As MailItem
Set mail = ActiveInspector.CurrentItem

mail.ReplyRecipients.Add ("XXXX@email.com")
mail.ReplyRecipients.Add ("XXXX@email.com")
mail.Recipients.ResolveAll
End Sub

这会将其设置为“直接回复:”,但前提是我打开了邮件。

【问题讨论】:

  • 好的,那么您实际尝试过什么?您坚持使用哪些部分?试着把它分解成更小的部分,你也许可以自己解决这个问题(或至少部分解决)。
  • 嗯,我一直在尝试首先弄清楚“set mail = active inspector.currentitem”这一行。我知道这是选择当前“打开”的电子邮件,但我首先想告诉它选择收件箱中突出显示的项目,然后打开对它的回复......我想一旦我把那部分写下来,我可能可以很容易地弄清楚其余的吗?让我做更多的研究并回复你:) 这可能会揭示我在 VBA 中的局限性。我实际上是想在当地的 CC 找一门课来更深入地学习它。
  • 好的,所以你需要使用Application.ActiveExplorer.Selection 而不是ActiveInspector。给我一分钟,我会尽力为您指明正确的方向。

标签: vba outlook outlook-2010


【解决方案1】:

让我们从这样的事情开始。正如我在 cmets 中提到的,您可以使用 ActiveExplorer 而不是 ActiveInspector。此宏设置为在所有选定项上运行,因此您可以选择多个电子邮件,并自动“回复”所有邮件。

Sub test()

Dim m As MailItem 'object/mail item iterator
Dim recip As Recipient 'object to represent recipient(s)
Dim reply As MailItem 'object which will represent the reply email

'Loop over each SELECTED item:
For Each m In Application.ActiveExplorer.Selection
    If m.Class = olMail Then
    Set reply = m.reply

    'Adds a "direct replies to" address:
    reply.ReplyRecipients.Add "XXXX@email.com"

    'Adds BCC recipient to the reply:
    Set recip = reply.Recipients.Add("someone_else@email.com")
    recip.Type = olBCC '3

    reply.Save 'saves a draft copy to your SENT folder
    reply.Send

    End If
Next

End Sub

信用到期,我不知道如何添加密件抄送收件人,但我在这里找到了如何做到这一点:

Add BCC to email with VBA in Outlook 2013

向功能区添加按钮可能涉及更多,并且肯定比可能需要的更复杂,如果您确实希望这样做,我建议它应该是一个新问题。功能区/XML 自定义不再是“简单”的 VBA。

目前,如果您只是启用“开发人员”功能区,则可以从“宏”菜单访问此宏:

【讨论】:

  • 哦,伙计.. 完美!我做到了这一点:Sub Reply() Dim mail As MailItem Set mail = ActiveInspector.CurrentItem mail.ReplyRecipients.Add ("xxxx@xxx.com") mail.Recipients.ResolveAll Dim myOlApp As Outlook.Application Dim myItem As Outlook.MailItem Dim objOutlookRecip As Outlook.Recipient ' no need for new Object, get current Object Set myOlApp = GetObject(, "Outlook.Application") Set myItem = myOlApp.ActiveInspector.CurrentItem With myItem .BCC = "xxxxx@xxxxx.com" End With 好的,我无法格式化我的评论,但非常感谢!
  • 为坚持而干杯!是的,在 cmets 中很难阅读您的代码,但存在一些问题:1: 您不需要使用 GetObject。默认情况下,Application. 引用 Outlook.Application 类,并且由于它正在运行,因此无需“获取”它,它已经在范围内:) 2: .BCC 字段已被读取- 只是这样你就不能那样分配它(我今天早上试图回答你的问题时发现了这一点!)。
  • 谢谢你!我注意到您的宏只是自动回复,我希望它只是打开一条回复消息,其中填写了所有密件抄送/直接回复,然后我可以输入我的消息。我将继续在你的宏上工作并自己弄清楚,所以我学到了更多,但你完全帮助我建立了一些联系。非常感谢!
  • reply.Send代替reply.Display
  • 顺便说一句,如果您想学习,请查看Outlook object model reference。这些起初可能有点神秘,您永远不需要使用其中的大部分,但这是查看您可以对某些对象做什么的好方法,例如MailItem。祝你好运!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 2013-11-26
  • 2013-07-25
  • 2012-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多