Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel宏将工作表另存为启用宏的新工作簿_Vba_Excel - Fatal编程技术网

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

Vba Excel宏将工作表另存为启用宏的新工作簿,vba,excel,Vba,Excel,到目前为止,我有: 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,它突出显示了Acti

到目前为止,我有:

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行。到底怎么了?谢谢您的时间。

请尝试以下操作:

ActiveWorkbook.SaveAs Filename:=Range("D1") & Format(Date, "ddmmyyyy"), FileFormat:=52
您使用的FileFormat参数(=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
使用
范围(“D1”)
而不指定父工作表,我有点不舒服。请注意不要试图在文件名中使用受限字符。

在“D:\BACKUP”文件夹中以今天的日期作为名称保存文件


谢谢!Range('Sheet1'!D1')给了我一个错误,那么我应该如何设置它的格式呢?尝试使用
Sheets('Sheet1')。Range('D1'))
正如Nicholas所指出的,您应该始终明确指定父工作表。您已经在使用新创建的工作簿中的
ActiveWorkbook
以及复制的工作表。如果您想要的名称位于“文档数据”工作表的D4中,您可以使用
工作表(“文档数据”).Range(“D4”)
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