这是关于Excel&展望2013 -
我正在解决我需要的问题......
除了#4,我可以实现上述所有目标。该脚本根据断点将电子邮件的整个主体放在不同的单元格中。
以下是我需要导出的电子邮件的副本:
兴趣范围:发布职位
工作类型:全职
校园位置:蒙哥马利
---------------------
联系信息:
职称:经理
联系姓氏:Wilson
联系人姓名:Allison
地址:北京市桃树路3424号
城市:亚特兰大
州:格鲁吉亚
邮编:30326
电话:4042669876
电子邮件:specialtyma@pyapc.com
---------------------
公司信息:
公司名称:Pershing,Yoakley&员工
公司电话:4042669876
公司传真号码:
公司网站:
业务类型:
---------------------
工作细节:
职位名称:医疗助理
开始日期:2016年8月1日
工作类型:全职
薪资范围:25,000美元
推荐来源:
---------------------
职位描述:
在蒙哥马利的一个专业实践,AL寻求医疗助理。之前的医疗实践经验是优选的。考生必须具备良好的人际关系和客户服务技能,必须是自学者和多任务者 - 协助医生对患者进行检查和治疗以及维护临床设备。
有意者请将简历提交至specialma@pyapc.com
---------------------
申请程序:
---------------------
招聘流程:
电话采访:是的
背景检查:是
参考检查:是
信用检查:否
技术测试:没有
人格测试:没有
体检:没有
驾驶记录:否
其他:没有
---------------------
要求接收简历的方式:
传真:否
邮件:没有
电子邮件:是
亲自申请:没有
在线申请:否
---------------------
其他要求:
上述粗体区域必须属于以下几个方面:
Job Title | Company Name | Description | Contact Name | Contact Email | Zip | Salary | Start Date |
这是我到目前为止所提到的(参考上面的#1-3)...我已将其置于Outlook的 ThisOutlookSession 中。
无论是否加粗,都不应该使用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
答案 0 :(得分:2)
如果你这样做:
Print #iFile, Replace(Msg.Body, vbCrLf, ",")
然后,它会将所有内容保存到文件中。
您需要做的是首先将vbCrLf上的文件拆分为一个行数组:
Dim arr
arr = Split(Msg.Body, vbCrLf)
然后你需要遍历那些寻找你想要提取的特定行的行:最好把它放到你可以从主代码中调用的函数中:
未测试:
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:")
获得所需的所有变量后,可以将它们一行附加到CSV中。
警告:您要提取的值中没有一个可以包含换行符(这可能是"作业说明"的问题),并且如果任何值可能包含一个逗号,你需要将它们包装在""在将它们写入CSV之前。