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

VBA执行SaveAs保存带YYYY-MM-DD时间戳文件时报类型不匹配错误

错误原因
  • 核心问题出在SaveAs方法的路径字符串语法错误:
    1. 字符串拼接符&被错误写在双引号内部,VBA无法识别变量拼接逻辑,会将整段当成普通文本处理
    2. 文件后缀.xlsx直接跟在xStrDate变量后,相当于调用字符串变量不存在的xlsx属性,直接触发类型不匹配报错
    3. 路径换行的续行符_前未加空格,不符合VBA语法规范
  • 你写的日期格式化逻辑VBA.Format(Now(), "yyyy-mm-dd")本身是正确的,mm、dd格式会自动给个位数的月、日补前导0,之前无前置0的问题是旧代码用了m/d格式导致的。
修正后的完整代码
Sub save2()
    'APAC
    Application.ScreenUpdating = False
    Dim wb As Workbook
    Dim xStrDate As String
    Dim savePath As String
    Set wb = Workbooks.Add
    xStrDate = VBA.Format(Now(), "yyyy-mm-dd")
    ThisWorkbook.Sheets("APAC_Coming_Due").Copy Before:=wb.Sheets(1)
    ThisWorkbook.Sheets("APAC_Overdue").Copy Before:=wb.Sheets(1)
    ThisWorkbook.Sheets("APACCover").Copy Before:=wb.Sheets(1)
    wb.Sheets(1).Name = "APAC - IMPORTANT INFORMATION"
    wb.Sheets(2).Name = "Overdue"
    wb.Sheets(3).Name = "Due Date Approaching"
    Application.DisplayAlerts = False
    wb.Sheets("Sheet1").Delete
    Application.DisplayAlerts = True ' 改回默认配置,避免后续操作告警被屏蔽
    
    ' 单独定义存储路径,更易排查语法问题
    savePath = "\\xxxxx.xx.xxxxx.com\xxxxxx\xxxx\xxxxxxx\xxxxxx\xxxxxx\xxxxx\xxxx" & _
    "\xxxxx\xxxx\xxx\APAC OverdueOutstanding - " & xStrDate & ".xlsx"
    ' 指定FileFormat避免xlsx格式存储报错,xlOpenXMLWorkbook对应无宏工作簿
    wb.SaveAs Filename:=savePath, FileFormat:=xlOpenXMLWorkbook
    wb.Close SaveChanges:=False ' 已完成存储,跳过保存提示
    Application.ScreenUpdating = True
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:57:02