Excel宏将工作表保存为新的启用宏的工作簿

时间:2015-08-10 07:24:01

标签: excel vba excel-vba

到目前为止,我有这个:

Sub new_book()

    Sheets(Array("Document Data", "Invoice data", "Summary", "Invoice")).Copy
    ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy") & ".xlsx", FileFormat:=52

End Sub

但是我得到运行时错误1004,它突出显示ActiveWorkbook行。究竟出了什么问题?谢谢你的时间。

3 个答案:

答案 0 :(得分:8)

您的Workbook.SaveAs method正在使用正确的 FileFormat 参数(xlOpenXMLWorkbookMacroEnabled = 52),但您无法轻易地尝试使用硬编码的.xlsx文件扩展名附加文件名而不是.xlsm文件扩展名。无论如何,如果您不提供,将添加正确的扩展名。

Sub new_book()

    Sheets(Array("Document Data", "Invoice data", "Summary", "Invoice")).Copy
    ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy") , FileFormat:=52

End Sub

我在使用Range("D1")而不指定父工作表时感到有点不舒服。不要试图在文件名中使用受限制的字符时要非常小心。

答案 1 :(得分:3)

尝试如下:

ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy"), FileFormat:=52

答案 2 :(得分:0)

"以今天的名称保存文件作为姓名" D:\ BACKUP"文件夹

sub new_sheet()
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("D:\BACKUP")

todays_date = Date$

For Each objFile In objFolder.Files

 If objFile.Name = todays_date & ".xls" Then
    objFile.Delete

 End If

 Next objFile



Workbooks.Add

ActiveWorkbook.SaveAs "D:\BACKUP" & todays_date & ".xls"    
end sub