You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取共享盘.msg邮件时ReceivedTime属性报错问题

问题核心错误点
  • 声明的oMsg、MailItem两个邮件对象全程未做实例化赋值,直接读取对象属性必然触发错误91(对象变量未设置),这是当前报错的直接原因。
  • 读取邮件属性的逻辑写在了文件遍历循环外部,就算对象赋值正确,也无法给遍历到的每一个msg文件匹配对应的接收时间。
  • 使用With oMsg块时oMsg本身未被初始化,属于无效代码块。
  • 遍历文件时未做后缀过滤,会把文件夹内非msg格式的文件纳入处理,后续会触发类型不匹配报错。
  • 手动拼接文件路径容易出现斜杠缺失/重复的问题,直接调用oFile.Path属性即可获取文件的完整绝对路径,无需手动拼接。
  • 行计数器i未显式设置初始值,容易出现写入位置错位。
修复后可直接运行的代码
Sub FileSearchAlt()
    Dim oFSO As Object
    Dim oFolder As Object
    Dim oFile As Object
    Dim i As Long
    Dim oOutlookApp As Object
    Dim oMsg As Object ' 前期绑定可改为 As Outlook.MailItem,运行速度更快
    
    ' 初始化核心对象
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oOutlookApp = CreateObject("Outlook.Application")
    ' 替换下面的路径为实际存放msg文件的共享盘文件夹路径
    Set oFolder = oFSO.GetFolder("C:\替换为你的实际文件夹路径")
    
    ' 初始化写入位置,第1行写表头,从第2行开始写数据
    i = 2
    Cells(1, 1) = "邮件文件完整路径"
    Cells(1, 2) = "邮件真实接收时间"
    
    ' 遍历文件夹内所有文件
    For Each oFile In oFolder.Files
        ' 仅处理后缀为msg的Outlook邮件文件
        If LCase(oFSO.GetExtensionName(oFile.Path)) = "msg" Then
            ' 加载本地msg文件为Outlook邮件对象
            Set oMsg = oOutlookApp.Session.OpenSharedItem(oFile.Path)
            
            ' 写入路径和接收时间
            Cells(i, 1) = oFile.Path
            Cells(i, 2) = oMsg.ReceivedTime
            ' 统一设置日期格式,避免显示异常
            Cells(i, 2).NumberFormat = "yyyy-mm-dd hh:mm:ss"
            
            ' 关闭邮件对象,释放内存
            oMsg.Close 1 ' 前期绑定可写为 olDiscard
            Set oMsg = Nothing
            
            i = i + 1
        End If
    Next oFile
    
    ' 释放所有对象,避免进程残留
    Set oFolder = Nothing
    Set oFSO = Nothing
    Set oOutlookApp = Nothing
    
    ' 自动调整列宽,方便查看
    Columns("A:B").AutoFit
End Sub
使用说明
  • 代码默认采用后期绑定写法,不需要提前在VBA编辑器里勾选Outlook对象库引用,替换路径后即可直接运行。
  • 只有通过OpenSharedItem方法加载本地msg文件后,才能读取到邮件内嵌的ReceivedTime属性,这个时间是邮件头记录的真实接收时间,和文件系统记录的创建/修改时间无关,完全匹配需求。
  • 代码每次读取完单封邮件都会主动释放对象,遍历大量文件时不会出现Outlook后台进程残留、内存占用过高的问题。
  • 如果需要遍历子文件夹内的msg文件,可以在现有逻辑基础上增加递归遍历子文件夹的代码即可。

内容的提问来源于stack exchange,提问作者Unda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 19:18:26