首页 > 解决方案 > VBA,Excel将电子邮件正文多行提取到excel单元格中

问题描述

我有将电子邮件正文提取到 excel 列中的按钮(下面的代码),我的问题是“问题描述:”有时不止一行,然后下一列“导航错误号:”应该是问题的下一行描述。

以下是此收件箱将收到的电子邮件示例:

Platform: Nav 
Department: HR 
Site: Thailand 
Process: Test 
Area: Purchase Orders 
Issue description: This is only test 
Nav error No.: Error test 

代码:

For Each olItem In olItems
    rCount = rCount + 1
    ws.Range("A" & rCount).Value = olItem.ReceivedTime
    ws.Range("B" & rCount).Value = olItem.SenderName
    ws.Range("C" & rCount).Value = olItem.Subject

    arrayLines = Split(olItem.Body, vbCrLf)
    ws.Range("D" & rCount).Value = Split(arrayLines(0), ": ")(1)  '<--- Platform
    ws.Range("E" & rCount).Value = Split(arrayLines(1), ": ")(1)  '<--- Department
    ws.Range("F" & rCount).Value = Split(arrayLines(2), ": ")(1)  '<--- Site
    ws.Range("G" & rCount).Value = Split(arrayLines(3), ": ")(1)  '<--- Process
    ws.Range("H" & rCount).Value = Split(arrayLines(4), ": ")(1)  '<--- Area
    ws.Range("I" & rCount).Value = Split(arrayLines(5), ": ")(1)  '<--- Issue description

    If arrayLines(6) = "" Then
        ws.Range("J" & rCount).Value = "N/A"  '<--- Nav error empty
    Else
        ws.Range("J" & rCount).Value = Split(arrayLines(6), ": ")(1)  '<--- Nav error message
    End If

Next olItem

我想在进入下一列(导航错误)之前将问题描述的全长添加到数组中。

提前感谢您的帮助。

标签: excelvbasplit

解决方案


如果我理解得很好,您就会知道您要查找的描述包含在字符串之间Issue description:,有时字符串Nav error No.:可能存在也可能不存在。

如果总是这样,那么您可以简单地提取您的描述,方法是用 string 拆分整个邮件正文Issue description:,然后取出第 1 部分并按 string 拆分Nav error No.:,然后获取 element 0

基本上那将是:

IssueDescription = Split(Split(olItem.Body, "Issue description: ")(1), "Nav error No.:")(0)

该变量IssueDescription现在包含整个描述,无论是在一行还是多行。如果你想在一个单元格中打印它(因此你不想要换行符),你可以用空格替换它们:

IssueDescription = Replace(IssueDescription, vbCrLf, " ")
ws.Range("I" & rCount).Value = IssueDescription

推荐阅读