如何在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.FullName
parsingpath
编辑:更好的语法也将是
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)