我有一个 Excel 工作簿,单击表单按钮我想保存工作簿的副本,文件名是当前日期。
我一直在尝试以下
ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
但收到Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
任何人都可以帮助我吗?我对 Excel 开发还是很陌生。
我有一个 Excel 工作簿,单击表单按钮我想保存工作簿的副本,文件名是当前日期。
我一直在尝试以下
ActiveWorkbook.SaveAs ("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
但收到Run-time error '1004': Method 'SaveAs' of object'_Workbook' failed.
任何人都可以帮助我吗?我对 Excel 开发还是很陌生。
您尝试访问的路径很可能不存在。您似乎正在尝试保存到相对位置,并且该字符串中没有文件扩展名。如果您需要使用相对路径,您可以从ActiveWorkbook.FullName
编辑:更好的语法也将是
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
使用此功能的最简单方法是从“录制宏”开始。开始录制后,将文件保存到您想要的位置,使用您想要的名称,然后当然设置文件类型,很可能是“Excel Macro Enabled Workbook”~“XLSM”
停止录制,您可以开始检查您的代码。
我编写了下面的代码,它允许您使用文件最初所在的路径保存工作簿,将其命名为“事件 [单元格“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”中写入日期,例如 01-01-2016 -> 将子分配给按钮并运行。[注意] 在此脚本生效之前,您需要创建一个保存文件,因为一个新的工作簿会保存到默认的自动保存位置!
可能是您的默认格式与文件扩展名不匹配。您应该指定文件格式以及文件名,确保格式与扩展名匹配:
With someWorkbook
.SaveAs "C:\someDirector\Awesome.xlsm", fileformat:=xlOpenXMLWorkbookMacroEnabled
End With
OTOH,我没有在您的 .SaveAs 文件名上看到扩展名。也许您需要在以编程方式执行此操作时提供一个。这是有道理的——不必从 GUI 界面提供扩展很方便,但我们程序员应该编写明确的代码。我建议添加扩展名和匹配格式。有关文件格式的列表,请参阅此 msdn 页面。老实说,我不认识很多描述。
xlExcel8 = 56 是 .xls 格式
xlExcel12 = 50 是 .xlsb 格式
xlOpenXMLWorkbook = 51 是 .xlsx 格式
xlOpenXMLWorkbookMacroEnabled = 52 是 .xlsm 格式
xlWorkbookDefault也列出了 51 的值,这让我感到困惑,因为我认为可以更改默认格式。
我在一个文件中成功使用了以下方法,
但是再次提出完全相同的错误......只有最后一行出现错误
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
我知道这是一篇旧帖子,但我正在查找类似的内容...我认为您的问题是当您使用 Now() 时,输出将为“6/20/2014”...这是文件的问题名称,因为它有“/”在里面。您可能知道,您不能在文件名中使用某些符号。
干杯
我一直在挣扎,但下面的内容终于为我工作了!
Dim WB As Workbook
Set WB = Workbooks.Open("\\users\path\Desktop\test.xlsx")
WB.SaveAs fileName:="\\users\path\Desktop\test.xls", _
FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
处理需要 .xlsx 工作簿的大量数据时,请使用以下语法
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=51
(有关更多文件格式,请参阅文档。)
Dim NuevoLibro As Workbook
Dim NombreLibro As String
NombreLibro = "LibroPrueba"
'---Creamos nuevo libro y lo guardamos
Set NuevoLibro = Workbooks.Add
With NuevoLibro
.SaveAs Filename:=NuevaRuta & NombreLibro, FileFormat:=52
End With
'*****************************
'valores para FileFormat
'.xlsx = 51 '(52 for Mac)
'.xlsm = 52 '(53 for Mac)
'.xlsb = 50 '(51 for Mac)
'.xls = 56 '(57 for Mac)
'*****************************