打开邮件项目和另存为文本的VBA Outlook代码

问题描述:

我收到其他Outlook邮件(* .msg)作为附件的Outlook邮件。我需要他们在txt格式(或任何其他Word可以打开)。打开邮件项目和另存为文本的VBA Outlook代码

我似乎有两个选择:

1)保存附件到我的硬盘为文本文件,而非MSG文件。我不知道如何做到这一点,无论是手动或通过代码。

2)将附件保存为msg文件(我在这里得到了一个宏,这样做),然后打开每个文件并保存在txt。但是文件 - >在Outlook 2010中打开没有打开msg文件的选项。我可以看到打开文件的唯一方法是(手动)在文件资源管理器中查看文件夹,然后双击它。一旦打开,我可以使用文件 - >另存为

3)我可以在VBA中打开并保存文件。或者我可以吗? (看来你不能录制宏在Outlook的方式,你可以在Word或Excel,否则我就已经尝试过了。)

编辑:我试过德米特里的建议,这似乎工作:

Dim oNamespace As NameSpace 
Dim oFolder As Folder 


' Get a reference to a NameSpace object. 
    Set oNamespace = Application.GetNamespace("MAPI") 

' Open the file containing the shared item. 
    Set oSharedItem = oNamespace.OpenSharedItem("D:\temp.msg") 

' Save the item to the folder. 
    oSharedItem.SaveAs "D:\temp.txt" 
+0

你还有问题吗? – 0m3r

+0

不,我使用上面的代码更全面的版本。 –

将嵌入的消息附件保存为MSG文件(Attachment.SaveAsFile),然后打开,然后使用Namespace.OpenSharedItem

如果您要访问的嵌入式邮件附件的邮件而不保存它们,你需要或者扩展MAPI(IAttach::OpenProperty(PR_ATTACH_DATA_OBJ, IID_IMessage, ...),C++或Delphi只),或Redemption(它暴露Attachment.EmbeddedMsg属性)。

+0

感谢您的快速响应,但我不熟悉Namespace.OpenSharedItem。我将如何使用它打开一个像“C:\ documents \ file.msg”这样的文件,然后将其另存为文本文件? –

+0

Namespace.OpenShared Item返回MailItem,调用MailItem.SaveAs(..,olTxt)。请参阅https://msdn.microsoft.com/en-us/library/office/ff869601.aspx?f=255&MSPPError=-2147217396 –

+0

虽然在SO中搜索有关\t Namespace.OpenShared Item的更多信息,但似乎大多数答案来自你,德米特里!你应该在你的答案中包含代码示例 - 不要害羞,我们需要你的专业知识! –