【问题标题】:Select patterns from mail body - VBA从邮件正文中选择模式 - VBA
【发布时间】:2013-12-21 03:25:45
【问题描述】:

我收到多封邮件,我必须在其中进行模式搜索并将结果保存到数组中。在excel vba中有什么简单的方法吗?

我的邮件内容如下所示:

选择: 您的选择

描述:我的描述

项目:

ITEM.12345.XYZ

ITEM.56789.KHI

ITEM.54567.YHT

这是一封示例邮件。

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

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

aryLines = Split(MyMail.Body, vbCrLf)

遍历aryLines

找到匹配项

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

【问题讨论】:

    标签: vba email excel outlook


    【解决方案1】:

    虽然我可能是错的,但恕我直言,像你所做的那样将身体分成数组是最快的方法。然后我循环遍历数组并结合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开头的单元格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 2014-11-18
      • 2018-11-08
      • 2015-03-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 1970-01-01
      相关资源
      最近更新 更多