将电子邮件数据导出到CSV文件(或XLS文件)中的特定字段

这是关于Excel和Outlook 2013 –

我正在处理一个我需要的问题

  1. 接收电子邮件
  2. 让电子邮件自动移动到特定的文件夹
  3. 将所述文件夹中的任何电子邮件导出到.csv文件中
  4. 该文件中的数据必须放在特定的列中。

除了#4,我可以达到上述所有。 该脚本根据断点将整个电子邮件的主体放置在不同的单元格中。

以下是我需要导出的电子邮件的副本:

兴趣范围:发布工作
工作types:全职
校园地点:蒙哥马利
---------------------
联系信息:

职位:经理
联系人姓氏:威尔逊
联系人名字:Allison
地址:3424 Peachtree Rd NE
城市:亚特兰大
状态:格鲁吉亚
邮编:30326
电话:4042669876
电子邮件:specialtyma@pyapc.com
---------------------
公司信息:

公司名称:Pershing,Yoakley&Associates
公司电话:4042669876
公司传真号码:
公司网站:
业务types:
---------------------
工作细节:

职位名称:医疗助理
开始date:2016年8月1日
工作types:全职
薪资范围:$ 25,000
引荐来源:
---------------------
职位描述:
在蒙哥马利的专业实践中,AL寻求一位医疗助理。
在医疗实践中的经验是首选。 候选人一定很棒
人际关系和客户服务技能,而且必须是自我启动者
和多任务 - 协助医生检查和治疗
病人和临床设备的维护。

有兴趣的应聘者应提交简历至:specialtyma@pyapc.com。
---------------------
申请stream程:

---------------------
招聘过程:

电话采访:是的
背景检查:是的
参考检查:是的
信用检查:否
技术testing:没有
个性testing:没有
体检:没有
驾驶logging:没有
其他:没有
---------------------
请求的方式接收简历:

传真:没有
邮件:没有
电子邮件:是的
亲自申请:否
在线申请:没有
---------------------
其他要求:

以上粗体地区,必须分为以下几个方面:

Job Title | Company Name | Description | Contact Name | Contact Email | Zip | Salary | Start Date | 

这是我到目前为止(指的是上面的#1-3)…我已经放在这个 Outlook的outlook会议。

不论什么粗体,都不要去CSV。

 Option Explicit Private WithEvents Items As Outlook.Items Private Sub Application_Startup() Dim olApp As Outlook.Application Dim objNS As Outlook.NameSpace Set olApp = Outlook.Application Set objNS = olApp.GetNamespace("MAPI") '// The INCOMING JOBS folder must be a folder of the INBOX. Set Items = objNS.GetDefaultFolder(olFolderInbox).Folders("Incoming Jobs").Items End Sub Private Sub Items_ItemAdd(ByVal item As Object) On Error GoTo ErrorHandler Dim Msg As Outlook.MailItem Dim iFile As Integer If TypeName(item) = "MailItem" Then Set Msg = item iFile = FreeFile Open "C:\Temp\INCOMING_JOBS.CSV" For Append As #iFile Print #iFile, Replace(Msg.Body, vbCrLf, ",") Close #iFile End If ExitPoint: Exit Sub ErrorHandler: MsgBox Err.Number & " - " & Err.Description Resume ExitPoint '// Debug only Resume End Sub 

如果你只是这样做:

 Print #iFile, Replace(Msg.Body, vbCrLf, ",") 

那么它将把所有的内容保存到文件中。

你需要做的是首先将vbCrLf上的文件分割成一行数组:

 Dim arr arr = Split(Msg.Body, vbCrLf) 

然后你需要循环寻找你想要提取的特定的行:最好把它放到你可以从你的主代码中调用的函数中:

未经testing:

 Function LineContent(arr, txtHeader) as String Dim rv as string, i as long for i=lbound(arr) to ubound(arr) if arr(i) Like txtHeader & "*" then rv = trim(replace(arr(i),txtHeader,"") exit for end if next i LineContent = rv End function 

然后像这样调用该函数:

 Dim cLastName as String cLastName = LineContent(arr, "Contact Last Name:") 

一旦你有所有你需要的variables,你可以将它们附加到一行到你的CSV。

注意事项:你想提取的值都不能包含换行符(这可能是“工作描述”的问题),如果任何值可能包含一个逗号,你需要将它们包装在“”中,然后写入你的CSV。