Outlook VBA - 将选定的电子邮件保存到单个文本文件,无需更改格式

时间:2015-05-20 01:44:13

标签: vba outlook outlook-vba

我正在尝试创建一个宏/脚本,它将获取我选择的Outlook邮件,并将它们保存为.txt文件。

我实际上是通过选择1个邮件来正确保存它,但问题是格式化了所有搞砸了,并开始切换单词 - 继承我使用过的代码:

Sub SaveSelectedMailAsTxtFile()
 Const OLTXT = 0
  Dim currentExplorer As Explorer
  Dim Selection As Selection
  Dim oMail As Outlook.MailItem
  Dim obj As Object
  Dim sPath As String
  Dim dtDate As Date
  Dim sName As String


  Set currentExplorer = Application.ActiveExplorer
    Set Selection = currentExplorer.Selection

 For Each obj In Selection
  Set oMail = obj
  sName = oMail.Subject


  oMail.SaveAs "C:\path\file.txt", OLTXT

  Next

End Sub

Private Sub ReplaceCharsForFileName(sName As String, _
  sChr As String _
)
  sName = Replace(sName, "/", sChr)
  sName = Replace(sName, "\", sChr)
  sName = Replace(sName, ":", sChr)
  sName = Replace(sName, "?", sChr)
  sName = Replace(sName, Chr(34), sChr)
  sName = Replace(sName, "<", sChr)
  sName = Replace(sName, ">", sChr)
  sName = Replace(sName, "|", sChr)
End Sub

2个问题 -

1我是否无法选择多个邮件,并将其保存为1个文本文件。

2邮件的格式化很多。例如,我得到了这个产品名称:

"Dansk kolloid sølv 1 liter, fremstillet i København" -

从outlook邮件粘贴的副本。

在我从脚本中获取的文本文件中,它的打印方式如下:

达 NSK KOLL OID SOL v 1 升 , FRE MST illet 一世 KO 本 HAV Ñ

这使得它很难使用:S有什么建议吗?任何帮助都会受到赞赏:)

奖励信息:我尝试过另外一项工作,我选择了多封电子邮件,只使用outlook的另存为功能。现在,如果我选择包含纯文本的邮件,我会遇到同样的问题 - 但是,如果我选择相同的订单电子邮件,再加上来自Humble Bundle或Twitch的电子邮件(我认为它们是基于HTML的电子邮件?不确定),以及保存这些电子邮件,格式在基于文本的电子邮件中不受影响,因此可用。

1 个答案:

答案 0 :(得分:0)

  1. Outlook不会在单个文件中保存多个项目。如果您愿意,可以合并多个文件。

  2. 您在Outlook中看到的Body属性是什么?您可以在OutlookSpy中检查其值 - 选择消息,单击Item属性,选择Body属性。