我有一个Excel工作簿,希望在表单按钮单击时保存该工作簿的副本,并使文件名为当前日期。
我一直尝试以下代码ActiveWorkbook.SaveAs("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
但出现了运行时错误 '1004':对象'_Workbook'的方法'SaveAs'失败。
有谁能帮助我吗?我还是Excel开发的新手。
我有一个Excel工作簿,希望在表单按钮单击时保存该工作簿的副本,并使文件名为当前日期。
我一直尝试以下代码ActiveWorkbook.SaveAs("\\filePath\FormFlow To MSExcel\" & Left(Now(), 10))
但出现了运行时错误 '1004':对象'_Workbook'的方法'SaveAs'失败。
有谁能帮助我吗?我还是Excel开发的新手。
您尝试访问的路径很可能不存在。看起来您正在尝试保存到相对位置,但在该字符串中没有文件扩展名。如果您需要使用相对路径,可以从ActiveWorkbook.FullName
解析路径。
编辑: 更好的语法还应该是
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
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
我在一个文件中成功使用了以下方法,
但是又出现了完全相同的错误... 只有最后一行出现了错误。
Newpath = Mid(ThisWorkbook.FullName, 1, _
Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
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)
'*****************************
我曾经苦苦挣扎,但最终下面的方法对我有用!
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
我认为你的问题在于当你使用Now()函数时,输出将会是"6/20/2014"。这对于文件名来说是一个问题,因为它包含"/"符号。正如你所知道的,文件名中不能使用某些符号。
当处理需要使用.xlsx工作簿的大量数据时,请使用以下语法
ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=51
ActiveWorkbook.SaveCopyAs ("\\filePath\Feed Program\FormFlow To MSExcel\Archive\FeedSampleReport-" & Format(Now(), "mmddyyyy") & ".xlsm")
。请注意,这是一段VBA(Visual Basic for Applications)代码,它将当前活动的工作簿另存为指定路径下的一个以当前日期命名的Excel文件。 - Analytic Lunatic