17

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

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

任何人都可以帮助我吗?我对 Excel 开发还是很陌生。

4

8 回答 8

26

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

编辑:更好的语法也将是

ActiveWorkbook.SaveAs Filename:=myFileName, FileFormat:=xlWorkbookNormal
于 2013-06-18T16:20:57.963 回答
10

使用此功能的最简单方法是从“录制宏”开始。开始录制后,将文件保存到您想要的位置,使用您想要的名称,然后当然设置文件类型,很可能是“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 -> 将子分配给按钮并运行。[注意] 在此脚本生效之前,您需要创建一个保存文件,因为一个新的工作簿会保存到默认的自动保存位置!

于 2015-09-11T12:33:39.927 回答
1

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

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 的值,这让我感到困惑,因为我认为可以更改默认格式。

于 2015-12-10T22:31:38.617 回答
0

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

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

Newpath = Mid(ThisWorkbook.FullName, 1, _
 Len(ThisWorkbook.FullName) - Len(ThisWorkbook.Name)) & "\" & "ABC - " & Format(Date, "dd-mm-yyyy") & ".xlsm"
ThisWorkbook.SaveAs (Newpath)
于 2015-01-20T23:14:16.743 回答
0

我知道这是一篇旧帖子,但我正在查找类似的内容...我认为您的问题是当您使用 Now() 时,输出将为“6/20/2014”...这是文件的问题名称,因为它有“/”在里面。您可能知道,您不能在文件名中使用某些符号。

干杯

于 2014-06-20T12:25:17.053 回答
0

我一直在挣扎,但下面的内容终于为我工作了!

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
于 2018-08-14T13:44:41.727 回答
0

处理需要 .xlsx 工作簿的大量数据时,使用以下语法

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

(有关更多文件格式,请参阅文档。)

于 2021-12-25T12:28:26.393 回答
0
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)
                                                    '*****************************
于 2020-04-09T20:40:55.623 回答