【发布时间】:2020-03-09 20:07:28
【问题描述】:
我在电子邮件中收到了如下所示的表格。
提交的详细信息如下:
Region Europe
Country Spain
Contactable by email no
Contactable by phone no
Title MR
First name John
Last name Doe
Email j.doe@doe.com
Contact number 1234567
Role Customer
Institution companyname ltd
Product TEST product
Message
TEST Question
我需要将一些字段提取到 Excel 工作簿中。
我一直在手动输入这些电子邮件,所以我需要找到一个代码来将数据提取到下一个空行中。
我的 Excel 标题如下所示
我在这里检查了一些答案,并设法整理了一个代码,但它似乎没有按需要工作。
这是我目前所拥有的。
我将它输入到 Outlook VBA 模块中。
Sub Extract()
Dim myOlApp As Outlook.Application
Dim myNameSpace As Outlook.NameSpace
Dim topOlFolder As Outlook.MAPIFolder
Dim myOlFolder As Outlook.Folder
Dim myOlMailItem As Outlook.MailItem
Set myNameSpace = Outlook.Application.GetNamespace("mapi")
Set objItem = objApp.ActiveExplorer.Selection.Item(1)
Dim xlObj As worksheet
Set xlObj = ActiveSheet
Dim anchor As Range
Set anchor = xlObj.Range("b2")
anchor.Offset(0, 0).Value = "Country"
anchor.Offset(0, 1).Value = "Role"
anchor.Offset(0, 2).Value = "Product"
anchor.Offset(0, 3).Value = "Message"
anchor.Offset(0, 4).Value = "Sender"
Dim msgText As String
Dim msgLine() As String
Dim messageArray() As String
i = 0
For Each myOlMailItem In myOlFolder.Items
i = i + 1
msgText = myOlMailItem.Body
messageArray = Split(msgText, vbCrLf)
For j = 0 To UBound(messageArray)
msgLine = Split(messageArray(j) & ":", ":")
Select Case Left(msgLine(0), 6)
Case "Countr"
anchor.Offset(i, 0).Value = msgLine(1)
Case "Role"
anchor.Offset(i, 1).Value = messageArray(j + 1)
Case "Product"
anchor.Offset(i, 2).Value = messageArray(j + 1)
Case "Message"
anchor.Offset(i, 3).Value = msgLine(1)
End Select
anchor.Offset(i, 4).Value = myOlMailItem.SenderName
anchor.Offset(i, -1).Value = i
Next
Next
End Sub
非常感谢您的帮助和 cmets。
编辑:
我已经运行了诊断工具,这就是电子邮件正文的样子:
|Message ‹2 crlf›|
|TEST question - please confirm receipt if received. ‹2 crlf›|
|AAA-BBB-001366 ‹2 crlf›|
|JAN 2020 ‹2 crlf›|
| ‹2 crlf›|
|info.com <http://info.com/?mc_phishing_protection_id=xxxbpg|
|db3lse2ip1c6bc0n0>‹2 s›‹2 crlf›|
| ‹2 crlf›|
| ‹3 crlf›|
|This email (including any attachment) is intended only for the use by the recipients named above and|
| contains proprietary information that may be confidential, copyrighted and/or privileged. Unauthori|
|zed disclosure, use or copying is prohibited. If this email was sent to you in error or if you are n|
|ot an intended recipient, please notify the sender immediately and delete this e-mail from your syst|
|ems. Thank you‹crlf›|
Html: |<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmln|
|s:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omm|
|l" xmlns="http://www.w3.org/TR/REC-html40"><head>‹2 crlf›|
|<meta name="Generator" content="Microsoft Word 15 (filtered medium)">‹crlf›|
|<title>Simple Transactional Email</title>‹crlf›|
|<style><!--‹crlf›|
|/* Font Definitions */‹crlf›|
|@font-face‹crlf›|
|‹tb›{font-family:"Cambria Math";‹crlf›|
|‹tb›panose-1:2 4 5 3 5 4 6 3 2 4;}‹crlf›|
|@font-face‹crlf›|
|‹tb›{font-family:Calibri;‹crlf›|
|‹tb›panose-1:2 15 5 2 2 2 4 3 2 4;}‹crlf›|
|/* Style Definitions */‹crlf›|
|p.MsoNormal, li.MsoNormal, div.MsoNormal‹crlf›|
|‹tb›{margin:0cm;‹crlf›|
|‹tb›margin-bottom:.0001pt;‹crlf›|
|‹tb›font-size:11.0pt;‹crlf›|
|‹tb›font-family:"Calibri",sans-serif;}‹crlf›|
|a:link, span.MsoHyperlink‹crlf›|
|‹tb›{mso-style-priority:99;‹crlf›|
|‹tb›color:blue;‹crlf›|
|‹tb›text-decoration:underline;}‹crlf›|
|a:visited, span.MsoHyperlinkFollowed‹crlf›|
|‹tb›{mso-style-priority:99;‹crlf›|
|‹tb›color:purple;‹crlf›|
|‹tb›text-decoration:underline;}‹crlf›|
|p.msonormal0, li.msonormal0, div.msonormal0‹crlf›|
|‹tb›{mso-style-name:msonormal;‹crlf›|
|‹tb›mso-margin-top-alt:auto;‹crlf›|
|‹tb›margin-right:0cm;‹crlf›|
|‹tb›mso-margin-bottom-alt:auto;‹crlf›|
|‹tb›margin-left:0cm;‹crlf›|
|‹tb›font-size:11.0pt;‹crlf›|
|‹tb›font-family:"Calibri",sans-serif;}‹crlf›|
|span.preheader‹crlf›|
|‹tb›{mso-style-name:preheader;}‹crlf›|
|span.EmailStyle19‹crlf›|
|‹tb›{mso-style-type:personal;‹crlf›|
|‹tb›font-family:"Calibri",sans-serif;‹crlf›|
|‹tb›color:windowtext;}‹crlf›|
|span.EmailStyle22‹crlf›|
|‹tb›{mso-style-type:personal-reply;‹crlf›|
|‹tb›font-family:"Calibri",sans-serif;‹crlf›|
|‹tb›color:windowtext;}‹crlf›|
|.MsoChpDefault‹crlf›|
|‹tb›{mso-style-type:export-only;‹crlf›|
|‹tb›font-size:10.0pt;}‹crlf›|
|@page WordSection1‹crlf›|
|‹tb›{size:612.0pt 792.0pt;‹crlf›|
|‹tb›margin:72.0pt 72.0pt 72.0pt 72.0pt;}‹crlf›|
|div.WordSection1‹crlf›|
|‹tb›{page:WordSection1;}‹crlf›|
|--></style><!--[if gte mso 9]><xml>‹crlf›|
|<o:shapedefaults v:ext="edit" spidmax="1026" />‹crlf›|
|</xml><![endif]--><!--[if gte mso 9]><xml>‹crlf›|
|<o:shapelayout v:ext="edit">‹crlf›|
|<o:idmap v:ext="edit" data="1" />‹crlf›|
|</o:shapelayout></xml><![endif]-->‹crlf›|
|</head>‹crlf›|
|<body bgcolor="#F6F6F6" lang="EN-US" link="blue" vlink="purple"><pre><div style="background-color:#F|
|FEB9C; width:100%; max-width:1040px; border-style: solid; border-color:#9C6500; border-width:1pt; pa|
|dding:2pt; font-size:10pt; line-height:12pt; font-family:'Calibri'; color:Black; text-align: left;">|
|<span style="color:#9C6500; font-weight:bold;">CAUTION:</span>This email originated from outside of |
|the Vifor Pharma Group organisation. Do not click on links or open attachments unless you recognise |
|the sender and know the content is safe.</div>‹crlf›|
|</pre>‹crlf›|
|<div class="WordSection1">‹crlf›|
|<p class="MsoNormal"><o:p> </o:p></p>‹crlf›|
|<p class="MsoNormal"><o:p> </o:p></p>‹crlf›|
|<p class="MsoNormal"><o:p> </o:p></p>‹crlf›|
|<div>‹crlf›|
|<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">‹crlf›|
|<p class="MsoNormal"><b>From:</b> Info GM <<a href="mailto:noreply@info|
|.com">noreply@info.com</a>>‹crlf›|
|<br>‹crlf›|
|<b>Sent:</b> 19 February 2020 16:20<br>‹crlf›|
|<b>To:</b> Info1 <<a href="mailto:infor1@info.com">pharma|
|info2@info.com</a>><br>‹crlf›|
|<b>Cc:</b> GM <<a href="mailto:info@info.com">GlobalMedInfo@info|
|.com</a>><br>‹crlf›|
|<b>Subject:</b> New query received<o:p></o:p></p>‹crlf›|
|</div>‹crlf›|
|</div>‹crlf›|
|<p class="MsoNormal"><o:p> </o:p></p>‹crlf›|
|<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:1|
|00.0%;background:#F6F6F6">‹crlf›|
|<tbody>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 0cm 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"> <|
|o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td width="580" valign="top" style="width:435.0pt;padding:7.5pt 7.5pt 7.5pt 7.5pt">‹crlf›|
|<div>‹crlf›|
|<p class="MsoNormal"><span class="preheader"><span style="font-size:10.5pt;font-family:"Arial&q|
|uot;,sans-serif">New query received</span></span><span style="font-size:10.5pt;font-family:"Ari|
|al",sans-serif">‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|<table class="MsoNormalTable" border="0" cellspacing="3" cellpadding="0" width="100%" style="width:1|
|00.0%;background:white;border-radius: 3px">‹crlf›|
|<tbody>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:15.0pt 15.0pt 15.0pt 15.0pt;box-sizing: border-box">‹crlf›|
|<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:1|
|00.0%;box-sizing: border-box">‹crlf›|
|<tbody>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 0cm 0cm">‹crlf›|
|<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:11.25pt;margin-left:0cm">‹crlf›|
|<span style="font-size:10.5pt;font-family:"Arial",sans-serif">New product complaint query |
|received from info.com<o:p></o:p></span></p>‹crlf›|
|<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:11.25pt;margin-left:0cm">‹crlf›|
|<span style="font-size:10.5pt;font-family:"Arial",sans-serif">The submitted details are be|
|low:<o:p></o:p></span></p>‹crlf›|
|<table class="MsoNormalTable" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:1|
|00.0%;background:white;box-sizing: border-box">‹crlf›|
|<tbody>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Region|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Europe|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Country|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Switzer|
|land‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Title|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Ms|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">First n|
|ame‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Joe|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Last na|
|me‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Doe|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Email|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif"><a href|
|="mailto:Joe.Doe.ext@info.com">Joe.Doe.ext@info.com</a>‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Contact|
| number‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm"></td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Role|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Other|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Institu|
|tion‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm"></td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Product|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|<td valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">TEST pr|
|oduct‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td colspan="2" valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><span style="font-size:10.5pt;font-family:"Arial",sans-serif">Message|
|‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td colspan="2" valign="top" style="padding:0cm 0cm 11.25pt 0cm">‹crlf›|
|<p class="MsoNormal"><i><span style="font-size:10.5pt;font-family:"Arial",sans-serif">TEST|
| question - please confirm receipt if received.‹crlf›|
|<o:p></o:p></span></i></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td colspan="2" valign="top" style="padding:0cm 0cm 0cm 0cm">‹crlf›|
|<p class="MsoNormal" align="right" style="text-align:right"><span style="font-size:10.5pt;font-famil|
|y:"Arial",sans-serif">ALL-ALL-001366‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|<tr>‹crlf›|
|<td colspan="2" valign="top" style="padding:0cm 0cm 0cm 0cm">‹crlf›|
|<p class="MsoNormal" align="right" style="text-align:right"><span style="font-size:10.5pt;font-famil|
|y:"Arial",sans-serif">JAN 2020‹crlf›|
|<o:p></o:p></span></p>‹crlf›|
|</td>‹crlf›|
|</tr>‹crlf›|
|</tbody>‹crlf›|
我已经运行了这个工具,这里是文本:
@Tony Dallimore Here is the text `Text: |From: Info <noreply@info.com <mailto:noreply@info.com> > ‹crlf›|
|Sent: 19 February 2020 16:20‹crlf›|
|To: Email1 <email1@info.com <mailto:email1|
|@info.com> >‹crlf›|
|Cc: Infor <Info1@infor.com <mailto:infor1@info.com> >‹crlf›|
|Subject: New query received‹2 crlf›|
| ‹2 crlf›|
| ‹2 crlf›|
|New query received ‹2 crlf›|
|New product complaint query received from info.com‹2 crlf›|
|The submitted details are below:‹2 crlf›|
|Region ‹2 crlf›|
|Europe ‹2 crlf›|
|Country ‹2 crlf›|
|Switzerland ‹2 crlf›|
|Title ‹2 crlf›|
|Mr ‹2 crlf›|
|First name ‹2 crlf›|
|Joe ‹2 crlf›|
|Last name ‹2 crlf›|
|Doe ‹2 crlf›|
|Email ‹2 crlf›|
|joedoe@info.com <mailto:joedoe@info.com>‹2 s›‹2 crlf›|
|Contact number ‹2 crlf›|
|‹tb›‹crlf›|
|Role ‹2 crlf›|
|Other ‹2 crlf›|
|Institution ‹2 crlf›|
|‹tb›‹crlf›|
|Product ‹2 crlf›|
|TEST product ‹2 crlf›|
|Message ‹2 crlf›|
|TEST question - please confirm receipt if received. ‹2 crlf›|
|AAA-BBB-001366 ‹2 crlf›|
|JAN 2020 ‹2 crlf›|
| ‹2 crlf›|
【问题讨论】:
-
什么不起作用?你能说得更具体点吗?
-
msgLine = Split(messageArray(j) & ":", ":")的目的是什么? -
当我运行这个宏时,我收到一条消息编译错误:未定义用户定义的类型。
msgLine = Split(messageArray(j) & ":", ":")应该分行 -
messageArray = Split(msgText, vbCrLf)将电子邮件的正文分成几行。如果一行包含冒号(例如,“Region: Europe”),那么msgLine = Split(messageArray(j), ":")会将这一行拆分为关键字和值。你认为 ` & ":"` 对示例行有什么作用? -
看看这个问题和我的回答:stackoverflow.com/q/54178058/973283。 OP 想要一个 Excel 宏,它从选定的电子邮件中提取选定的值并将它们添加到工作表的底部。提取过程与您的非常不同,但整体结构将相似。