【问题标题】:Type mismatch error when saving with timestamp使用时间戳保存时出现类型不匹配错误
【发布时间】:2021-10-15 14:56:25
【问题描述】:

我的代码在“SaveAs”行停止,出现类型不匹配错误,知道为什么吗?我真的需要 YYYY-MM-DD 格式的日期。我有有效的代码,但它会将单个数字的月份和日期显示为单个数字,而不是 04。

Sub save2()
'APAC
Application.ScreenUpdating = False
Dim wb As Workbook
Dim xStrDate 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


wb.SaveAs"\\xxxxx.xx.xxxxx.com\xxxxxx\xxxx\xxxxxxx\xxxxxx\xxxxxx\xxxxx\xxxx_
\xxxxx\xxxx\xxxx\APAC OverdueOutstanding & " - " & xStrDate.xlsx"
ActiveWorkbook.Close
End Sub

【问题讨论】:

  • 续行下划线不能像您拥有的那样在字符串内,并且您还需要在SaveAs 中指定与您的文件扩展名匹配的文件类型规范。
  • 你的 xStrDate 变量也是“在你的字符串内部”,它不应该是。可能只是引号的问题。首先将整个部分放在一行上,然后在尝试将其分成 2 之前让它工作,如果你真的需要它在 2 上。
  • 换行符只是为了堆栈溢出。在实际代码中只有一行。
  • 以后最好不要这样做。如您在 Peh 的回答中所见,Stack Overflow 会自动添加滚动条。

标签: excel vba type-mismatch


【解决方案1】:

您需要在字符串之外使用& 正确连接字符串和变量,而不是在里面!

如果您有换行符,您需要以" & _ 结束字符串并在下一行开始一个新字符串:

wb.SaveAs "\\xxxxx.xx.xxxxx.com\xxxxxx\xxxx\xxxxxxx\xxxxxx\xxxxxx\xxxxx\xxxx" & _ 
          "\xxxxx\xxxx\xxxx\APAC OverdueOutstanding - " & xStrDate & ".xlsx"
wb.Close

或将所有内容放在一行中:

wb.SaveAs "\\xxxxx.xx.xxxxx.com\xxxxxx\xxxx\xxxxxxx\xxxxxx\xxxxxx\xxxxx\xxxx\xxxxx\xxxx\xxxx\APAC OverdueOutstanding - " & xStrDate & ".xlsx"
wb.Close

【讨论】:

  • @PEH 换行符只是为了堆栈溢出,但它是引号谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-23
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多