运行 Excel 来自 Outlook 的宏,根据电子邮件主题触发
Run Excel Macro from Outlook, Triggered Based on Email Subject
我正在尝试设置一个自动化流程,当我在 Outlook 中收到一封包含 "subject" 的电子邮件时,它会自动触发宏以打开 Excel 和 运行 我在 Excel 中设置的一个宏。如何实现?
如果需要可以提供更多信息 - 谢谢!
您需要先在 Outlook 中编写 vba 代码。 This site 可以帮助您入门。
然后让它检查附件是否是excel可以打开的文件类型,如果是就让它打开excel。
运行 excel 文件上的另一个宏需要 excel 的 vba 代码同时打开包含您编写的宏的工作簿,因此您还需要一种方法outlook 宏可以将文件名插入到 excel 宏中,以识别 excel 宏需要在哪个工作簿上 运行.
编辑:也许还有一种方法可以使您打开的 excel 工作簿从您存储在硬盘上的位置导入宏,这样可以节省您打开另一个 excel 文件的时间,并引用您希望它位于 运行 上的文件。然后你可以参考 "ActiveWorksheet"
有两种可能的方法来执行您的任务。
第一个是创建 Outlook 规则并在规则触发时为 运行ning 分配一个 VBA 宏。 VBA 宏子应该如下所示:
Public Sub Test(mail as MailItem)
' so something here
End Sub
第二种方式是处理Applicationclass的NewMailEx事件。在这种情况下,无需在 Outlook 中创建规则。您的代码将由事件触发。以下是 MSDN 的声明:
Microsoft Outlook 处理每个收到的项目都会触发一次此事件。该项目可以是多种不同项目类型中的一种,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。
NewMailEx 事件在新邮件到达收件箱时且在客户端规则处理发生之前触发。您可以使用 EntryIDCollection 数组中返回的条目 ID 来调用 NameSpace.GetItemFromID 方法并处理该项目。请谨慎使用此方法,以尽量减少对 Outlook 性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应该假设在这些事件触发后,收件箱中的项目数量总是会增加一个项目。
在代码中,您需要自动化 Excel。 Application class 的 Run 方法可用于以编程方式 运行 VBA 宏。
最后,您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。
我正在尝试设置一个自动化流程,当我在 Outlook 中收到一封包含 "subject" 的电子邮件时,它会自动触发宏以打开 Excel 和 运行 我在 Excel 中设置的一个宏。如何实现?
如果需要可以提供更多信息 - 谢谢!
您需要先在 Outlook 中编写 vba 代码。 This site 可以帮助您入门。 然后让它检查附件是否是excel可以打开的文件类型,如果是就让它打开excel。 运行 excel 文件上的另一个宏需要 excel 的 vba 代码同时打开包含您编写的宏的工作簿,因此您还需要一种方法outlook 宏可以将文件名插入到 excel 宏中,以识别 excel 宏需要在哪个工作簿上 运行.
编辑:也许还有一种方法可以使您打开的 excel 工作簿从您存储在硬盘上的位置导入宏,这样可以节省您打开另一个 excel 文件的时间,并引用您希望它位于 运行 上的文件。然后你可以参考 "ActiveWorksheet"
有两种可能的方法来执行您的任务。
第一个是创建 Outlook 规则并在规则触发时为 运行ning 分配一个 VBA 宏。 VBA 宏子应该如下所示:
Public Sub Test(mail as MailItem)
' so something here
End Sub
第二种方式是处理Applicationclass的NewMailEx事件。在这种情况下,无需在 Outlook 中创建规则。您的代码将由事件触发。以下是 MSDN 的声明:
Microsoft Outlook 处理每个收到的项目都会触发一次此事件。该项目可以是多种不同项目类型中的一种,例如 MailItem、MeetingItem 或 SharingItem。 EntryIDsCollection 字符串包含对应于该项目的条目 ID。
NewMailEx 事件在新邮件到达收件箱时且在客户端规则处理发生之前触发。您可以使用 EntryIDCollection 数组中返回的条目 ID 来调用 NameSpace.GetItemFromID 方法并处理该项目。请谨慎使用此方法,以尽量减少对 Outlook 性能的影响。但是,根据客户端计算机上的设置,在新邮件到达收件箱后,垃圾邮件过滤和将新邮件从收件箱移动到另一个文件夹的客户端规则等过程可能会异步发生。您不应该假设在这些事件触发后,收件箱中的项目数量总是会增加一个项目。
在代码中,您需要自动化 Excel。 Application class 的 Run 方法可用于以编程方式 运行 VBA 宏。
最后,您可能会发现 Getting Started with VBA in Outlook 2010 文章很有帮助。