将电子邮件数据导出到CSV文件(或XLS文件)中的特定字段
这是关于Excel和Outlook 2013 –
我正在处理一个我需要的问题
- 接收电子邮件
- 让电子邮件自动移动到特定的文件夹
- 将所述文件夹中的任何电子邮件导出到.csv文件中
- 该文件中的数据必须放在特定的列中。
除了#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。