【发布时间】:2021-05-24 19:43:27
【问题描述】:
我正在从零开始创建一个 excel 文件,添加内容并保存它。保存后,我想使用 VBA 代码重命名 excel 文件。我要重命名的文件与我正在编写代码的文件不同。
目前我正在尝试这样做(这是我的代码的 sn-p,只是为了显示我如何保存文件):
Dim workbook1 As Workbook
Dim name As String, lastcell As String
Dim oldname As String, newname As String
Set workbook1 = Application.Workbooks.Add
name = "financial report - "
workbook1.SaveAs ThisWorkbook.Path & "\" & name & ".xlsx"
'lastcell has a date that I want in my new title
lastcell = Range("A1").End(xlDown).Text
oldname = ThisWorkbook.Path & "\" & name & ".xlsx"
newname = ThisWorkbook.Path & "\" & name & lastcell & ".xlsx"
Name oldname As newname
但是当我运行它时,我得到了这个:
我的lastcell 变量中的值应该是像dd/mm/yyyy 这样的日期格式。我尝试复制并用作新 Excel 名称一部分的确切单元格是 05/02/2021。
sub 末尾的 name 值应该是financial report - 05/02/2021。
如果以前没有人问过这个问题,我会感到惊讶。有人知道我做错了什么或对我的代码有任何建议吗?
【问题讨论】:
-
当您使用
SaveAs保存工作簿文件时,它会保持打开状态。只要它处于打开状态,就不能移动、删除或重命名它。但是为什么不直接用正确的名字存储呢? -
希望我能。每当我尝试以这种方式保存它时,我都会收到一个“1004”错误,告诉我有几个可能的原因。
-
@Sena 但这是唯一的方法,那时您可能问错了问题(请参阅What is the x/y problem)。因为正如 FunThomas 所说,只要它是打开的,你就不能重命名它,当你关闭它时,你的 VBA 就会停止(你不能再用 VBA 重命名它了)。所以正确的方法是下面的答案。
-
添加
Debug.Print oldname和Debug.Print newname并查看输出的样子。第一个是现有文件,第二个是有效文件名吗?如果lastcell有一个日期,它的格式是否可以作为文件名的一部分有效? -
Just tested it,它看起来像一个有效的名称 - 实际上就像它应该工作的那样。我使用
VarType来查看lastcell的值的类型是什么,它是一个字符串。我不确定我还能做什么。