ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 982|回复: 5

[求助] outlook如何用VBA导出收件人邮箱&发件日期

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-25 23:10 | 显示全部楼层 |阅读模式
求助:如主题-outlook客户端或者网页版office 365邮件,如何导出excel-收件邮箱-收件日期。


背景:
1、这个邮箱使用系统分发邮件,系统能导出发送邮件记录excel明细,每天300封;
2、因邮箱内存99G,此前邮箱故障自动删除了一些邮件,现已通过技术恢复了大部分,邮件总数4w封。

问题:需要查找比对邮件缺失,缺失邮件一般有抄送,通过联系抄送人员获取。

途径:已有系统导出发送明细-每天每个发件人邮箱一般只发一次,想通过outlook客户端用VBA或者其他方式,提取发件邮箱、发件日期,进行自动比对,看看哪些缺失。

难点:不会VBA,如何实现已发送文件夹(有子文件夹按月份建立)邮件,历遍,得到一个excel或txt文件,有发件邮箱、发件日期,如能提取发件主题等那是锦上添花。

TA的精华主题

TA的得分主题

发表于 2023-8-26 19:52 | 显示全部楼层

Sub ExportEmailData()
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namespace
    Dim olFolder As Outlook.MAPIFolder
    Dim olItem As Object
    Dim i As Integer
    Dim ws As Worksheet
   
    ' 创建一个新的工作表
    Set ws = ThisWorkbook.Sheets.Add
   
    ' 添加标题行
    ws.Cells(1, 1).Value = "收件人邮箱"
    ws.Cells(1, 2).Value = "发件日期"
   
    ' 初始化Outlook应用程序和命名空间
    Set olApp = New Outlook.Application
    Set olNamespace = olApp.GetNamespace("MAPI")
   
    ' 获取收件箱文件夹
    Set olFolder = olNamespace.GetDefaultFolder(olFolderInbox)
   
    ' 遍历收件箱中的邮件
    i = 2 ' 从第二行开始写入数据
    For Each olItem In olFolder.Items
        If TypeOf olItem Is Outlook.MailItem Then
            ' 写入收件人邮箱和发件日期到工作表
            ws.Cells(i, 1).Value = olItem.To
            ws.Cells(i, 2).Value = olItem.ReceivedTime
            i = i + 1
        End If
    Next olItem
   
    ' 释放对象
    Set olItem = Nothing
    Set olFolder = Nothing
    Set olNamespace = Nothing
    Set olApp = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-28 09:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
约定的童话 发表于 2023-8-26 19:52
Sub ExportEmailData()
    Dim olApp As Outlook.Application
    Dim olNamespace As Outlook.Namesp ...

谢谢回复。给大佬反馈下:
1、以上代码在excel、outlook均无法使用,F5运行后提示:“编译错误,用户定义类型未定义”;
2、主要是需要输出《已发送邮件》的邮箱、发件日期、主题(锦上添花),是已发送邮件缺失较多(既往超内存自动删除)。

我算是VBA小白,不太看得懂代码,但是代码应该输出excel,应该要有一个路径,没有看到编码有路径。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-28 09:51 | 显示全部楼层
远方未来 发表于 2023-8-28 09:50
谢谢回复。给大佬反馈下:
1、以上代码在excel、outlook均无法使用,F5运行后提示:“编译错误,用户定 ...

这里路径是只输出文件保存的地址的意思,不知道我的理解是否准确

TA的精华主题

TA的得分主题

发表于 2023-8-30 12:23 | 显示全部楼层
远方未来 发表于 2023-8-28 09:50
谢谢回复。给大佬反馈下:
1、以上代码在excel、outlook均无法使用,F5运行后提示:“编译错误,用户定 ...

引用outlook对象了没?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-31 14:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1693463173246.jpg 还是不行的,outlook和excel能勾的我都勾选了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 15:57 , Processed in 0.045975 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表