宏将电子邮件另存为文本文件,以便在规则中使用

时间:2014-02-06 19:01:19

标签: vba email outlook

我的问题与this threadthis one非常相似。我认为我的问题是将这两个问题结合起来。

我正在跑步:

  • 操作系统:Windows 7企业版专业版
  • Outlook 2010
  • VBA版本7.0

通过阅读这两个问题以及来自Microsoft和其他地方的其他一些页面,我能够打开VB编辑器并粘贴到它中,这个简单的代码:

Sub SaveEmail(msg As Outlook.MailItem)
  ' save as text
  msg.SaveAs "C:\Users\mel\mailsave\email.txt" & Format(Now, "YYYYMMDDHHMMSS"), _
      olTXT
End Sub
  • 我的msg.SaveAs行的“格式”部分是否会为符合我规则的每封电子邮件保存一个唯一的文本文件?
  • 如何运行此宏进行测试,如果成功,我该如何重复运行?

我尝试进入运行菜单并选择运行“子/用户表单”项,但是下一个对话框询问要运行什么,并且不填充可用于运行的宏列表。点击“保存”图标但没有任何改变。

1 个答案:

答案 0 :(得分:4)

使用该签名(Sub method (var As Outlook.MailItem))指定方法允许您在创建邮箱规则时使用该方法。据我了解你的问题,你已经超出了这一点。

问题1

代码的格式部分最多只能每秒保存一次唯一文件。您将当前日期和时间附加到文件。但是,您的主要问题不是时间戳,而是文件格式。您应该在文件扩展名之前应用时间戳,例如

msg.SaveAs "C:\Users\mel\mailsave\email" & Format(Now, "YYYYMMDDHHMMSS") & ".txt", olTXT

问题2

如果将宏添加到规则中,则会在匹配规则时运行该宏。可以通过创建一种抓取当前所选邮件的方法来测试宏,例如

Sub TestSaveEmail()
   Call SaveEmail(ActiveExplorer.Selection(1))
End Sub

然后可以通过在方法中设置光标并按F5来运行该宏。

通过自定义功能区并添加宏按钮,还可以将宏添加到Outlook用户界面。有关自定义功能区的帮助,请参阅以下文章:

Customize the ribbon