从邮件正文中选择模式 - VBA

时间:2013-12-21 03:25:45

标签: excel vba email excel-vba outlook

我收到多封邮件,我必须进行模式搜索并将结果输入数组。在excel vba中有没有简单的方法呢?

我的邮件内容如下:

选择: 你的选择

描述:我的描述

项目:

ITEM.12345.XYZ

ITEM.56789.KHI

ITEM.54567.YHT

这是一个示例邮件。

............................

我需要grep所有以ITEM开头的行。我可以这样做:

aryLines = Split(MyMail.Body, vbCrLf)

循环通过aryLines

找到匹配

我正在寻找一个简单的解决方案,因为匹配线的数量不同,有时它可以超过1000,有时小于10.我想将这些值填充到xls表。

1 个答案:

答案 0 :(得分:0)

我可能错了,但恕我直言将身体分成阵列就像你所做的那样是最快的方法。然后我遍历数组并与INSTR()LEFT()一起获取相关的行。在你的情况下,我会LEFT()。事实上我一直都在使用它。

例如

aryLines = Split(MyMail.Body, vbCrLf)

For i = LBound(aryLines) To UBound(aryLines)
    If InStr(1, aryLines(i), "ITEM", vbTextCompare) Then

    End If
Next i

另一个选项是在将数据拆分为数组后立即将数据导出到Excel中,然后使用.AutoFilter

aryLines = Split(aaa, vbCrLf)

oXLWorksheet.Range("A1").Resize(UBound(aryLines), 1).Value = _
oXLAP.WorksheetFunction.Transpose(aryLines)

导出数据后,您可以使用Autofilter删除不需要的行。可以看到一个例子HERE。此示例复制已过滤的范围,但您可以对其进行编辑以删除范围

Autofilter的条件为Criteria1:="<>ITEM*"。这意味着过滤不以ITEM

开头的单元格