【问题标题】:Save Outlook Email as text file, and then run a script on it?将 Outlook 电子邮件另存为文本文件,然后在其上运行脚本?
【发布时间】:2015-10-29 10:14:41
【问题描述】:

我使用的是 Outlook 2007。我没有 Windows 编程或 VBA 经验,因为我的所有背景都是 Unix 系统。我试图让 Outlook 将每封传入的电子邮件保存为文本文件,然后运行一个 python 脚本来解析这个文本文件。

我发现this 问题似乎提供了一些 VBA 代码来完成第一项任务,但我不确定如何使用它。我打开 Visual Basic 编辑器,但不知道如何从那里开始。我尝试将文本保存为模块,但是当我尝试在 Outlook 规则中添加“运行脚本”时,没有可用的脚本。我做错了什么?

编辑:澄清。

【问题讨论】:

    标签: windows vba outlook


    【解决方案1】:

    我假设您熟悉一些级别的编码,即使不是在 Windows 上。您可能想在 Outlook VBA 上做一些一般性的背景阅读;这方面的一些资源可能是来自 OutlookCode 的 Microsoft articlethis article 等等 - 那里有大量资源,包括演练和示例。

    解决您的具体问题:查看this Microsoft KB article,它描述了如何从规则触发脚本。

    打开 VBA 编辑器后开始使用的关键是双击左侧的模块,例如 ThisOutlookSession(在“Microsoft Outlook 对象”下)。 这应该会给你一个编辑器,你可以将代码粘贴到其中。请记住(根据上面的 MS 页面)您的程序必须接受 MailItem 对象,该对象将是规则所拥有的项目,因此您提供的链接示例的前几行将从:

    Sub SaveEmail()
        Dim msg As Outlook.MailItem
        ' assume an email is selected
        Set msg = ActiveExplorer.Selection.Item(1)
        ' save as text
        [...]
    

    ...到:

    Sub SaveEmail(msg As Outlook.MailItem)
        ' save as text
        [...]
    

    本质上,您将收到一个 MailItem,而不必创建它并将其连接到 Outlook 中的选定项目。

    为了实现对文件“运行脚本”的第二个任务,我假设您希望您的 VBA 在文件保存后对其进行更改?这在 VBA 中非常简单,您会找到很多示例。一个非常简单的大纲在this answer

    基于 cmets 编辑: 要启动外部工具,您可以使用 Shell 命令,如果您不需要等待它完成,或者您可以使用其中一个许多 Shell-and-wait 实现浮动,例如 this popular one。或者,您可以在this answer 中使用WScript 方法。

    请注意,您需要ensure Outlook is set to allow macros to run,并且您可能需要sign your code

    【讨论】:

    • "双击左侧的模块"做到了!您对保存文件后运行 python 脚本有什么建议吗?
    • 太棒了!要运行 python 脚本,您可以通过命令行启动解释器,或 convert the script to an EXE 并启动 that。我将添加有关启动外部进程的编辑。
    猜你喜欢
    • 2015-01-22
    • 1970-01-01
    • 2015-02-18
    • 2015-12-02
    • 2019-04-24
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多