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

jwo*_*off 2 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
Run Code Online (Sandbox Code Playgroud)

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

小智 8

Workbook.SaveAs方法使用的是正确的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
Run Code Online (Sandbox Code Playgroud)

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

  • 尝试`Sheets("Sheet1").范围("D1")` (2认同)
  • 正如Nicholas指出的那样,您应该始终明确指定父工作表.您已经使用新创建的工作簿中的`ActiveWorkbook`和复制的工作表.如果您想要的名称在"文档数据"工作表的D4中,您将使用`表格("文档数据").范围("D4")`. (2认同)