Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从邮件正文-VBA中选择模式_Vba_Email_Excel_Outlook - Fatal编程技术网

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

从邮件正文-VBA中选择模式,vba,email,excel,outlook,Vba,Email,Excel,Outlook,我收到多封邮件,我必须进行模式搜索,并将结果发送到一个数组中。在ExcelVBA中有没有简单的方法 我的邮件内容如下所示: 选择: 你的选择 描述:我的描述 项目: 项目1.12345.XYZ 项目5.56789.KHI 项目54567.YHT 这是一封示例邮件 ............................ 我需要grep以ITEM开头的所有行。我可以这样做: aryLines = Split(MyMail.Body, vbCrLf) 环通过芳基线 找到匹配的 我正在寻找一个简单的

我收到多封邮件,我必须进行模式搜索,并将结果发送到一个数组中。在ExcelVBA中有没有简单的方法

我的邮件内容如下所示:

选择: 你的选择

描述:我的描述

项目:

项目1.12345.XYZ

项目5.56789.KHI

项目54567.YHT

这是一封示例邮件

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

aryLines = Split(MyMail.Body, vbCrLf)
环通过芳基线

找到匹配的


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

虽然我可能错了,但我认为像你这样将尸体分割成阵列是最快的方法。然后我在数组中循环,并结合
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
的标准将是
Criteria1:=“ITEM*”
。这意味着不以
项开始的筛选单元格