我的本地文件夹中有一个启用宏的工作簿。该工作簿共包含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"
答案 0 :(得分:1)
您的文件名将不完整,因为ActiveWorkbook.Path
将为空。 ActiveWorkbook将是您新创建的工作簿,由于您尚未保存它,Path
将为空。请改用ThisWorkbook
来获取当前工作簿的路径。
我不确定ActiveSheet.SaveAs
方法是否有效,但我没有调查过。我个人会使用Workbook.SaveAs
方法来保存新的工作簿。此外,您应该使用FileFormat参数MSDN FileFormat Enum
我已使用评论更新了您的代码,以帮助了解正在发生的事情:
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