如何在VBA代码中执行“另存为”,使用datestamp保存当前的Excel工作簿?

我有一个Excel工作簿,在窗体button单击我想保存工作簿的副本与文件名是当前date。

我继续尝试下面的ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))但接收Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.

任何人都可以帮助我吗? 对于Excel开发,我还是很新的。

您尝试访问的path很可能不存在。 看来你正试图保存到一个相对的位置,你没有在该string中的文件扩展名。 如果您需要使用相对path,则可以从ActiveWorkbook.FullNameparsingpath

编辑:更好的语法也将是

 ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal 

使用这个function最简单的方法是从“录制macros”开始。 一旦你开始录制,将文件保存到你想要的位置,用你想要的名字,然后设置文件types,最有可能的是“Excelmacros启用工作簿”〜“XLSM”

停止录制,您可以开始检查您的代码。

我写了下面的代码,它允许您使用文件最初位于的path保存工作簿,并将其命名为“Event [cell in cell A1”]“

 Option Explicit Sub SaveFile() Dim fdate As Date Dim fname As String Dim path As String fdate = Range("A1").Value path = Application.ActiveWorkbook.path If fdate > 0 Then fname = "Event " & fdate Application.ActiveWorkbook.SaveAs Filename:=path & "\" & fname, _ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False Else MsgBox "Chose a date for the event", vbOKOnly End If End Sub 

将代码复制到一个新模块中,然后在单元格“A1”中写入一个date,例如01-01-2016 – >将该子分配给一个button并运行。 [注意]您需要在此脚本生效之前创build一个保存文件,因为新的工作簿将被保存到默认的自动保存位置!

这可能是您的默认格式不匹配文件扩展名。 您应该指定文件格式以及文件名,确保格式符合扩展名:

 With someWorkbook .SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled End With 

OTOH,我没有看到.SaveAs文件名的扩展名。 也许你需要提供一个以编程的方式。 这是有道理的 – 不必从GUI界面提供扩展是方便的,但是我们程序员需要编写明确的代码。 我build议添加扩展名和匹配的格式。 看到这个MSDN页面的文件格式的列表。 说实话,我不太了解这个说法。

xlExcel8 = 56是.xls格式

xlExcel12 = 50是.xlsb格式

xlOpenXMLWorkbook = 51是.xlsx格式

xlOpenXMLWorkbookMacroEnabled = 52是.xlsm格式

xlWorkbookDefault 列出了一个值为51,这使我困惑,因为我认为默认的格式可以改变。

我知道这是一个旧的职位,但我正在寻找类似的东西…我认为你的问题是,当你使用Now(),输出将是“6/20/2014”…这是一个文件的问题名字,因为它有“/”在里面。 正如你可能知道的,你不能在文件名中使用某些符号。

干杯

我在一个文件中成功使用了以下方法,

但再次提出完全相同的错误…只有最后一行出现错误

 Newpath = Mid(ThisWorkbook.FullName, 1, _ Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm" ThisWorkbook.SaveAs (Newpath)