gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:47:01 25 4
gpt4 key购买 nike

这是关于 Excel 和 Outlook 2013 -

我正在解决一个问题,我需要......

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

我可以实现以上所有目标,除了#4。该脚本根据断点将电子邮件的整个正文放置在不同的单元格中。

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

感兴趣的领域:发布职位
工作类型:全职
校园地点:蒙哥马利
----------------------------------
联系方式:

职位:经理
联系人姓氏:Wilson
联系人名字:Allison
地址:东北桃树路 3424 号
城市: 亚特兰大
州:乔治亚州
zip :30326
电话:4042669876
电子邮件:specialtyma@pyapc.com
----------------------------------
公司信息:

公司名称:Pershing, Yoakley & Associates
公司电话:4042669876
公司传真号码:
公司网址:
业务类型:
----------------------------------
职位详情:

职位名称:医疗助理
开始日期:2016 年 8 月 1 日
工作类型:全职
薪资范围:25,000 美元
推荐来源:
----------------------------------
职位描述:
阿拉巴马州蒙哥马利的一家专业诊所正在寻找一名医疗助理。
具有医疗实践经验者优先。应聘者必须具备良好的
人际交往和客户服务技能,并且必须是积极主动的
和多任务处理者 - 协助医生检查和治疗
患者以及维护临床设备。


有兴趣的候选人请将简历提交至specialtyma@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

最佳答案

如果你这样做:

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 之前,请将它们包裹在“”中。

关于excel - 将电子邮件数据导出到 CSV 文件(或 XLS 文件)中的特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38665041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com