使用vba从Outlook电子邮件正文获取某些文本?

时间:2014-11-11 14:06:49

标签: excel vba outlook-vba

我正在使用以下代码从我的电子邮件正文中检索公司名称。所以,例如,如果我有

Company name: Hewden

然后我想得到'Hewden'

在我的电子邮件正文中的公司名称下面我还有以下内容:

company number: 123
company status: live

kind regards,

automated email

我使用以下代码尝试仅检索公司名称“Hewden”而没有任何前面或后面的文本。

我在第b4 = olkmsgt.Body

上收到无效的程序调用或参数错误

并且我不确定为什么,有人可以告诉我如何修改它以使它做我想要的。

感谢

Dim b4 As String
                        b4 = olkMsg.Body

    Dim indexOfNameb As Integer
        indexOfNameb = InStr(1, b4, "Company Name: ")

    Dim indexOfNamec As Integer
        indexOfNamec = InStr(1, b4, "Company number: ")

    Dim finalStringb As String

        finalStringb = Mid(b4, indexOfNameb, indexOfNamec - indexOfNameb)
        Dim LResult36 As String
        LResult36 = Replace(finalStringb, "Company Name: ", "")

       excWks4.Cells(intRow4, 1) = LResult36

1 个答案:

答案 0 :(得分:0)

您可能想要检查对象/项目olkMsg是否是Outlook MailItem。它可能是没有身体属性的邀请,任务等。

if TypeName(olkMsg) = "MailItem" then
b4 = olkMsg.Body
...

编辑(评论回答): InStr()是区分大小写的。 “公司名称:”不是“公司名称:” 尝试将所有字符串放到UCases中以消除案例敏感性:

If TypeName(olkMsg) = "MailItem" Then
    b4 = olkMsg.Body

    Dim indexOfNameb As Integer
        indexOfNameb = InStr(UCase(b4), UCase("Company name: "))

    Dim indexOfNamec As Integer
        indexOfNamec = InStr(UCase(b4), UCase("Company number: "))

    Dim finalStringb As String

        finalStringb = Mid(b4, indexOfNameb, indexOfNamec - indexOfNameb)
        Dim LResult36 As String
        LResult36 = Replace(finalStringb, "Company Name: ", "")

       excWks4.Cells(intRow4, 1) = LResult36
End If