首页 文章

从Outlook运行Excel宏,基于电子邮件主题触发

提问于
浏览
0

我正在尝试设置一个自动过程,当我在Outlook中收到包含“主题”的电子邮件时,它会自动触发宏以在Excel中打开附加的.xls文件并运行我在Excel中设置的宏 . 如何实现这一目标?

如有必要可以提供更多信息 - 谢谢!

2 回答

  • 1

    实现任务有两种可能的方式 .

    第一个是创建Outlook规则,并在规则触发时分配VBA宏以便运行 . VBA宏sub应如下所示:

    Public Sub Test(mail as MailItem)
       ' so something here
    End Sub
    

    第二种方法是处理Application类的NewMailEx事件 . 在这种情况下,无需在Outlook中创建规则 . 您的代码将由事件触发 . 以下是MSDN所述的内容:

    对于Microsoft Outlook处理的每个接收项,此事件将触发一次 . 该项可以是几种不同项类型之一,例如,MailItem,MeetingItem或SharingItem . EntryIDsCollection字符串包含与该项对应的条目ID .

    当新邮件到达收件箱时以及客户端规则处理发生之前,将触发NewMailEx事件 . 您可以使用EntryIDCollection数组中返回的条目ID来调用NameSpace.GetItemFromID方法并处理该项 . 请谨慎使用此方法,以尽量减少对Outlook性能的影响 . 但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生 . 您不应该假设在这些事件发生后,您将始终获得收件箱中项目数量的一项增加 .

    在代码中,您将需要自动化Excel . Application类的Run方法可用于以编程方式运行VBA宏 .

    最后,您可能会发现Getting Started with VBA in Outlook 2010文章很有帮助 .

  • 0

    首先,您需要在Outlook中编写vba代码 . This site可以帮助您入门 . 然后检查附件是否是excel可以打开的文件类型,如果是这种情况,则让它打开excel . 在excel文件上运行另一个宏需要excel的vba代码也打开包含你编写的宏的工作簿,所以你还需要一种方法,在这种方法中,outlook宏可以将文件名插入到excel宏中来识别哪个工作簿上的excel宏需要运行 .

    编辑:也许还有一种方法可以使你打开的excel工作簿从你将它存储在硬盘上的地方导入宏,这将节省你打开另一个excel文件,并引用你希望它运行的文件 . 然后,您可以参考“ActiveWorksheet”

相关问题