【问题标题】:SaveAs html without creating the subfolders with .xml filesSaveAs html 不使用 .xml 文件创建子文件夹
【发布时间】:2015-05-02 16:11:01
【问题描述】:

我正在尝试将所有传入的电子邮件另存为 .html 文件,但它会为每封电子邮件创建一个子文件夹。

这是我的代码:

Public Sub ShowMessage(Item As Outlook.MailItem)
Dim path As String
path = "C:\Users\me\Desktop\"
Item.SaveAs path & Item.SenderName & ".htm", olHTML
End Sub

它给了我类似的东西: “joe.htm”和一个名为“joe_files”的文件夹,其中包含“colorschememapping.xml”和“filelist.xml”以及“themedata.thmx”

有没有办法在没有这些文件的情况下另存为?

在 Word 中,我通过另存为过滤后的 HTML 解决了这个问题,但 Outlook 似乎无法解决这个问题。

这是我在 MSWord 中的代码:

ActiveDocument.SaveAs FileName:=Path, FileFormat:=wdFormatFilteredHTML

或者是否可以使用 MailItem.BodyFormat 来编辑项目的正文,然后将其保存为 html?这样一来,当 Outlook 保存为 HTML 时,我们就不会有 Outlook 的所有自动编码。 (https://msdn.microsoft.com/en-us/library/office/ff869979.aspx)

【问题讨论】:

    标签: html vba outlook ms-office


    【解决方案1】:

    尝试使用 olMHTML (10) 格式。

    您也可以简单地读取 HTMLBody 属性并将其保存为文件 - 问题可能是 Unicode 字符 - HTMLBody 属性是 UTF-16,并且 HTML 文件必须是 8 字节,因此您需要根据PR_INTERNET_CPID 的值(可能不一定与 HTML 正文中的代码页匹配)。

    如果使用Redemption 是一个选项,它支持olHTMLEmbeddedImages 格式,它会创建一个HTML 文件,其中包含<img> 标记内的图像数据。 Outlook(使用 Word 呈现 HTML 消息)不喜欢这样,但 IE 和 Firefox 都应该没问题。它嵌入了已附加到消息的图像以及引用的图像(已下载):

      set Session = CreateObject("Redemption.RDOSession")
      Session.MAPIOBJECT = Application.Session.MAPIOBJECT
      set Item = Session.GetMessageFromID(Application.ActiveExplorer.Selection(1).EntryID)
      Item.SaveAs "c:\temp\HTMLWithImages.html", 1033 ' olHTMLEmbeddedImages
    

    【讨论】:

    • 这就像一个HTML文件一样,可以被IE显示。但它给你一个文件。
    • 是的,这对于 i.e. 来说是正确的,但我使用的是 Firefox,它看起来并不好。而且文件的代码极其复杂。无论如何,谢谢。
    【解决方案2】:

    没关系...我解决了。 通过重新阅读我的问题,我才意识到答案就在那里。

    item.SaveAs path & Item.SenderName & ".htm", olTxt
    

    不知何故,微软的支持页面没有提到过滤的 HTML 可以在他们的代码上工作,但它确实可以。

    https://msdn.microsoft.com/en-us/library/office/ff868727.aspx?

    【讨论】:

    • olFilteredHTML?你是从那里得到那个枚举的吗?
    • @DmitryStreblechenko,是的,它可以按我的意愿工作。它不会保存其他文件。
    • 什么是olFilteredHTML?它从哪里来的?它绝对不是 OlSaveAsType 枚举值之一。您是否在代码中声明了 olFilteredHTML?
    • 它在 MSWord 上工作,所以我在 Outlook 上试了一下,结果他工作了,所以我很高兴。就是这么简单。
    • 字? MailItem.SaveAs 是 Outlook 方法调用,而不是 Word。 MsgBox(olFilteredHTML) 显示什么?
    猜你喜欢
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 2021-07-02
    相关资源
    最近更新 更多