将HTML格式化电子邮件(不是URL)解析为VBA

时间:2017-03-07 11:14:21

标签: html vba email parsing

上下文

我正在接收格式化为HTML的电子邮件。 电子邮件中有一张桌子。 我想解析表格,以便我可以访问表格中的各个单元格。

根据关于SO的众多问题和答案,我发现访问它的方法是做这样的事情:

objIE.document.getElementsByTagName("td")

...这将在HTML文件中创建列的数组(组)。这样就可以了。

问题:

而不是objIE.document。在众多SO示例中指向某个URL,我想在此特定情况下将其指向电子邮件。在这个特定情况下,我的电子邮件被称为" Msg"我做的是:

Dim Msg As Outlook.MailItem

在我的代码中,我做了以下事情:

 Msg.Body.getElementsByTagName ("td")

但是我收到错误说#34;无效限定符"尝试运行它时该行出错。

关于如何访问表格单元格/元素的任何想法?

1 个答案:

答案 0 :(得分:1)

这是一种应该让你非常接近的方法。您要做的是将电子邮件的HTML存储到HTML文件中,这样您就可以使用元素选择器来查找您感兴趣的内容。此代码需要对Outlook对象的引用。< / p>

这是一个简短的例子。

Option Explicit

Public Sub SOTest()
    Dim outlook     As outlook.Application
    Dim ns          As outlook.NameSpace: Set ns = GetNamespace("MAPI")
    Dim folder      As outlook.MAPIFolder: Set folder = ns.PickFolder
    Dim item        As outlook.MailItem
    Dim html        As Object: Set html = CreateObject("htmlfile")
    Dim elements    As Object
    Dim element     As Object

    For Each item In folder.Items
        If item.Class = olMail Then ' Make sure it's a Mail Item...change if not needed
            html.Body.Innerhtml = item.HTMLBody ' set the body of the email equal to the html from outlook email
            Set elements = html.getElementsByTagName("td")
            For Each element In elements
                Debug.Print element.InnerText
            Next
        End If
    Next

End Sub