如何在vba代码中执行"另存为",使用日期戳保存当前的Excel工作簿?

Ana*_*tic 17 excel vba excel-2007 save archive excel-vba

我有一个Excel工作簿,单击表单按钮我想保存工作簿的副本,文件名是当前日期.

我一直在尝试以下 ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))但接受了Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.

任何人都可以帮我这个吗?我仍然很擅长开发Excel.

cha*_*cea 23

很可能您尝试访问的路径不存在.您似乎正在尝试保存到相对位置,并且该字符串中没有文件扩展名.如果需要使用相对路径,则可以解析路径ActiveWorkbook.FullName

编辑:更好的语法也将

ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
Run Code Online (Sandbox Code Playgroud)

  • 我非常成功地使用了您的代码.谢谢!一个小问题:使用xlWorkbookNormal的文件格式将文件保存为Excel 97-2003工作簿.要保存为当前.xlsx工作簿,您必须使用xlOpenXMLWorkbook.我的代码: (8认同)
  • 谢谢您的帮助!最后通过以下内容得到了我的信息:`ActiveWorkbook.SaveCopyAs("\\ filePath\Feed Program\FormFlow To MSExcel\Archive\FeedSampleReport-"&Format(Now(),"mmddyyyy")&".xlsm")` (7认同)
  • 而不是使用名称(如xlWorkbookNormal),使用数字.否则,您可能无法使用较旧的Excel进行编译.见http://www.rondebruin.nl/win/s5/win001.htm (3认同)

小智 10

使用此功能的最简单方法是从"录制宏"开始.一旦开始录制,将文件保存到所需的位置,使用您想要的名称,然后当然设置文件类型,很可能是"Excel Macro Enabled Workbook"〜"XLSM"

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

我编写了下面的代码,允许您使用文件最初所在的路径保存工作簿,将其命名为"Event [date 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
Run Code Online (Sandbox Code Playgroud)

将代码复制到新模块中,然后在单元格"A1"中写入日期,例如01-01-2016 - >将子项分配给按钮并运行.[注意]您需要在此脚本运行之前创建一个保存文件,因为新工作簿将保存到默认的自动保存位置!