从一个工作簿中复制工作表,并将其保存到名为单元格中的值的新工作簿中

我想从Workbook1中复制Sheet2并将其粘贴到新工作簿的Sheet1中,并将新工作簿保存为Sheet2工作簿1中的单元格A1的值。我希望在单击添加的button时触发此macros。

这是迄今为止我所做的,但它创build两个工作簿 – 一个具有正确的名称,但不包含Sheet2,Workbook1的内容 – 另一个具有Sheet2,Workbook1的内容但不是正确的工作簿名称

Sub CreateWorkbook() Dim n As String n = ThisWorkbook.Path & "\" & Range("A1").Value & ".xls" Workbooks.Add ActiveWorkbook.SaveAs n ThisWorkbook.Sheets("Sheet2").Copy ActiveWorkbook.Sheets("Sheet1").PasteSpecial xlPasteValues End Sub 

我在这里错过了什么?

我不认为由Workbooks.Add创build的新工作Workbooks.Add默认成为ActiveWorkbook

使用ThisWorkbookActiveWorkbook可能会令人困惑。

我喜欢将工作簿和工作表设置为variables,所以你知道你处理的东西:)

我无法得到Copy然后PasteSpecial位工作(虽然我没有尝试所有的困难)。

下面的例子应该做你想要的。 我使用Sheet2!A1作为文件名,不能确定代码示例中的AK545是什么。

 Sub Example() Dim Output As Workbook Dim FileName As String Set Output = Workbooks.Add FileName = ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(2).Cells(1, 1).Value & ".xls" Output.SaveAs FileName Application.DisplayAlerts = False Output.Worksheets("Sheet1").Delete ThisWorkbook.Worksheets(2).Copy Before:=Output.Worksheets("Sheet2") Output.Worksheets(1).Name = "Sheet1" Application.DisplayAlerts = True Output.Save End Sub