SaveAs带有variables文件名/位置的错误

我正在尝试使用SaveAsfunction将电子表格保存到其他位置。 当我硬编码文件的名称,文件保存很好。

但是,由于我每天可以保存大约50个这样的文件,所以我需要能够区分保存的文件。 我试图设置文件名的一部分是可变的,这取决于文件保存时的时间戳。 (是的,我知道我可以按保存的date/时间对文件夹进行sorting,但是这些文件也可能被多人使用,他们可能不知道如何以这种方式使用function)。

这引发了一个错误

运行时错误'1004'方法'另存为'objct'_Workbook'失败

代码是:

Set wb = Workbooks.Add ThisWorkbook.Sheets("Holdings_Summary").Copy Before:=wb.Sheets(1) x = 2 k = Sheets.Count While x <= k Sheets(x).Delete k = Sheets.Count Wend z = Format(DateTime.Now, "hh:mm dd:MM:YYYY") wb.SaveAs "J:\A_Drive\Recon folders\Holdings" & z & ".xlsx" Workbooks("test1.xlsx").Close savechanges:=True 

据我所知,文件名不能包含“:”或“;”。 所以唯一的错误,我看到你的代码是

z =格式(DateTime.Now,“ hh:mm dd:MM:YYYY ”)

我试过下面的代码,它工作正常;

 Z = Date z2 = "D:\Users\B_PAMUK\Desktop\" & Z & ".xlsm" ActiveWorkbook.SaveAs Filename:=z2 

您可以通过获得小时和分钟部分来实现小时,并用点连接它们。 我希望有帮助;)

你不能在一个文件名中使用冒号!

改变你的“格式”为:

 z = Format(DateTime.Now, "hh-mm dd-MM-YYYY") 

或者你喜欢什么性格而不是“ – ”

如果你想要的名字sorting很好,然后使用YYYY-MM-dd格式:

 z = Format(DateTime.Now, "YYYY-MM-dd hh-mm") 

有关Windows文件命名约定的信息,请参阅此处,特别是关于保留字符的部分: https : //msdn.microsoft.com/en-gb/library/windows/desktop/aa365247(v=vs.85).aspx

具体来说,冒号是为设备名称保留的,通常是驱动器号或打印机/串行端口。