我收到多封邮件,我必须进行模式搜索并将结果输入数组。在excel vba中有没有简单的方法呢?
我的邮件内容如下:
选择: 你的选择
描述:我的描述
项目:
ITEM.12345.XYZ
ITEM.56789.KHI
ITEM.54567.YHT
这是一个示例邮件。
我需要grep所有以ITEM开头的行。我可以这样做:
aryLines = Split(MyMail.Body, vbCrLf)
循环通过aryLines
找到匹配
我正在寻找一个简单的解决方案,因为匹配线的数量不同,有时它可以超过1000,有时小于10.我想将这些值填充到xls表。
答案 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