将Excel中的单个工作表保存到具有所需名称

时间:2016-09-17 10:53:03

标签: excel excel-vba vba

我的本​​地文件夹中有一个启用宏的工作簿。该工作簿共包含7个工作表。最后一张名为" AnsSheet"。 我想将最后一个工作表(仅限AnsSheet)保存在具有修改名称的同一文件夹位置。 这是我正在使用的代码,它没有给出期望的结果。

你能指导一下吗?

Sheets("AnsSheet").Select
Set wb = Workbooks.Add
ThisWorkbook.Sheets("AnsSheet").Copy Before:=wb.Sheets(1)
ActiveSheet.SaveAs Filename:=ActiveWorkbook.Path & "\WF_Macro_" & Format(Date, "DD-MMM-YYYY") & ".xls"

1 个答案:

答案 0 :(得分:1)

您的文件名将不完整,因为ActiveWorkbook.Path将为空。 ActiveWorkbook将是您新创建的工作簿,由于您尚未保存它,Path将为空。请改用ThisWorkbook来获取当前工作簿的路径。

我不确定ActiveSheet.SaveAs方法是否有效,但我没有调查过。我个人会使用Workbook.SaveAs方法来保存新的工作簿。此外,您应该使用FileFormat参数MSDN FileFormat Enum

指定文件类型,而不是在文件名的末尾添加“.xls”。

我已使用评论更新了您的代码,以帮助了解正在发生的事情:

Dim wb As Excel.Workbook

'\\ Create a new Workbook with only one Worksheet
Set wb = Workbooks.Add(xlWBATWorksheet)

'\\ Copy Sheet to start of new Workbook
ThisWorkbook.Sheets("AnsSheet").Copy Before:=wb.Sheets(1)

'\\ Turn off alerts and delete the unused sheet, turn alerts back on
Application.DisplayAlerts = False
wb.Sheets(2).Delete
Application.DisplayAlerts = True

'\\ Save new Workbook as a standard Workbook
wb.SaveAs Filename:=ThisWorkbook.Path & "\WF_Macro_" & Format(Date, "DD-MMM-YYYY"), _
          FileFormat:=xlWorkbookNormal