从电子邮件主体中提取特定数据 [英] Extract specific data from emailbody

查看:133
本文介绍了从电子邮件主体中提取特定数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们如何将特定数据从outlook body消息导出到excel。

on 2 model of mail

以及我们如何计算邮件正文上的行数。

a给你我的例子。

邮件类型1一个是

how we can export a specific data from outlook body message to excel .
on 2 model of mail
and how we can count number of lines on mail body.
a give you my example .
mail type1 one is

[First Name],Boby Rayan
[Cont Number], A0ED011011782
[Send Date],03/03/18
[Total Mt],00742241
[Total Mtc],00209166
[Total Mtb],00533075
[Total Mtfs],00101361

邮件类型2一个是



mail type2 one is

[First Name],David porter
[Cont Number], A1UF011011598
[Send Date],03/01/18
[Total Mtb],00258552
[Total Mtfs],00146186



我收到邮件类型和2个相同的收件箱邮件

我在Excel中需要的是这样的


and i receive mail type and 2 in same inbox mail
what i need in excel is like this

First Name * Cont Number   * Send Date* Total Mt * Total Mtc * Total Mtb * Total Mtfs
Boby Rayan * A0ED011011782 * 03/03/18 * 00742241 * 00209166  *00533075   * 00101361
David porter*A1UF011011598 * 03/01/18  *         *           * 00258552  * 00101361





我的尝试:



i尝试了这个,如果有人可以帮助我



What I have tried:

i tried this if some one can help me

Sub Extract()
 On Error Resume Next
 Set myOlApp = Outlook.Application
 Set mynamespace = myOlApp.GetNamespace("mapi")
 Set myfolder = myOlApp.ActiveExplorer.CurrentFolder
 
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim x As Long
Dim arrHeaders As Variant



Set xlobj = CreateObject("excel.application.15")
 xlobj.Visible = True
 xlobj.Workbooks.Add
 xlobj.Worksheets("Sheet1").Name = "Statusmail"
 
'Set the header
 xlobj.Range("a" & 1).Value = "Sender"
 xlobj.Range("a" & 1).Font.Bold = "True"
 'xlobj.Range("b" & 1).Value = "Date"
 'xlobj.Range("b" & 1).Font.Bold = "True"
 xlobj.Range("c" & 1).Value = "First Name"
 xlobj.Range("c" & 1).Font.Bold = True
 xlobj.Range("d" & 1).Value = "Cont Number"
 xlobj.Range("d" & 1).Font.Bold = True
 xlobj.Range("e" & 1).Value = "Send Date"
 xlobj.Range("e" & 1).Font.Bold = True
 xlobj.Range("f" & 1).Value = "Total Mt"
 xlobj.Range("f" & 1).Font.Bold = True
 xlobj.Range("g" & 1).Value = "Total Mtc"
 xlobj.Range("g" & 1).Font.Bold = True
 xlobj.Range("h" & 1).Value = "Total Mtb"
 xlobj.Range("h" & 1).Font.Bold = True
 xlobj.Range("i" & 1).Value = "Total Mtfs"
 xlobj.Range("i" & 1).Font.Bold = True
For x = 1 To myfolder.Items.Count
  Set myitem = myfolder.Items(x)
  msgtext = myitem.Body
  'search for specific text
    delimtedMessage = Replace(msgtext, "[First Name],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Cont Number],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Send Date],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Total Mt],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Total Mtc],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Total Mtb],", "###")
    delimtedMessage = Replace(delimtedMessage, "[Total Mtfs],", "###")
    messageArray = Split(delimtedMessage, "###")
   'write to excel
    xlobj.Range("a" & x + 1).Value = myitem.To
    xlobj.Range("b" & x + 1).Value = messageArray(0)
    xlobj.Range("c" & x + 1).Value = messageArray(1)
    xlobj.Range("d" & x + 1).Value = messageArray(2)
    xlobj.Range("e" & x + 1).Value = messageArray(3)
    xlobj.Range("f" & x + 1).Value = messageArray(4)
    xlobj.Range("g" & x + 1).Value = messageArray(5)
    xlobj.Range("h" & x + 1).Value = messageArray(6)
    xlobj.Range("i" & x + 1).Value = messageArray(7) 


 Next
 End
 End Sub

推荐答案

试试这个:

Try this:
Dim xlObj As Object, xlWbk As Object, xlWsh As Object
Dim piecesToFind As Variant
Dim i As Integer, j As Integer, k As Integer, r As Integer, x As Integer

piecesToFind = Array("[First Name]", "[Cont Number]", "[Send Date]", "[Total Mt]", "[Total Mtc]", "[Total Mtb]", "[Total Mtfs]")

'further
Set xlObj = CreateObject("Excel.Application") 'Excel application
Set xlWbk = xlobj.Workbooks.Add 'workbook
Set xlWsh = xlobj.Worksheets(1) 'worksheet

xlWsh.Name = "Statusmail"

'Set the header
With xlWsh
    .Range("A" & 1).Value = "Sender"
    .Range("A" & 1).Font.Bold = "True"
    '...

End With

r = 2
For x = 1 To myfolder.Items.Count
    Set myitem = myfolder.Items(x)
    msgtext = myitem.Body
    For i = LBound(piecesToFind) To UBound(piecesToFind)
        j = InStr(1, msgText, piecesToFind(i), vbBinaryCompare)
        k = InStr(j + 1, msgText, vbCrLf, vbBinaryCompare) ' replace vbCrLf with the correct one
        If k = 0 Then k = Len(msgText)
        If j > 0 And k > 0 Then
            xlWsh.Range("A" & r).Offset(ColumnOffset:=i) = "'" & Mid(msgText, j + Len(piecesToFind(i)) + 1, k - j - Len(piecesToFind(i)))
       End If
    Next
    r = r +1    
Next





注:部分代码已被省略。



Note: some pieces of code have been omitted.


这篇关于从电子邮件主体中提取特定数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆