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

Outlook VBA保存附件:将时间戳添加至文件名右侧

修正方案:将时间戳插入Outlook附件文件名主体与扩展名之间

原代码的核心问题是直接将时间戳拼接在文件名前,且未拆分文件名主体与扩展名,导致格式不符合要求。以下是具体修正方案:

修正思路

  1. 准确定位文件名中最后一个点的位置,分离文件名主体和扩展名
  2. 调整时间戳格式匹配示例要求
  3. 将时间戳插入主体与扩展名之间后拼接成新文件名

完整修正代码

Public Sub nameremoved(MItem As Outlook.MailItem)
    Dim oAttachment As Outlook.Attachment
    Dim sSaveFolder As String, sFileName As String
    Dim dt As String
    Dim dotPos As Integer
    Dim fileNameWithoutExt As String, fileExt As String
    
    sSaveFolder = "location removed"
    ' 修正日期格式为yyyy-mm-dd,去掉末尾多余空格
    dt = Format(Now, "yyyy-mm-dd hh-mm-ss")
    
    For Each oAttachment In MItem.Attachments
        sFileName = LCase(oAttachment.FileName)
        If sFileName Like "*.csv" Then
            ' 定位最后一个点的位置,分离文件名主体和扩展名
            dotPos = InStrRev(oAttachment.FileName, ".")
            If dotPos > 0 Then ' 确保文件名有扩展名
                fileNameWithoutExt = Left(oAttachment.FileName, dotPos - 1)
                fileExt = Mid(oAttachment.FileName, dotPos)
                ' 拼接成目标格式的文件名:主体 + 空格 + 时间戳 + 扩展名
                oAttachment.SaveAsFile sSaveFolder & fileNameWithoutExt & " " & dt & fileExt
            End If
        End If
    Next
    
    MItem.UnRead = False
End Sub

关键改动说明

  • 日期格式修正:将原yyyy-dd-mm改为yyyy-mm-dd,匹配示例中的日期顺序;同时移除dt末尾多余空格,改为拼接时主动添加空格,避免格式混乱
  • 文件名拆分逻辑:使用InStrRev查找文件名中最后一个点的位置,确保即使文件名包含多个点(如report.v2.csv),也能准确分离主体和扩展名
  • 新文件名拼接:按文件名主体 + 空格 + 时间戳 + 扩展名的格式拼接,完全符合需求示例(如testfile 2023-03-08 12-57-34.csv)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:25:31