从一个工作簿复制工作表并保存在新工作簿中,其名称是单元格中的值

时间:2013-03-12 12:15:13

标签: excel excel-vba vba

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

这是我到目前为止所做的,但它创建了两个工作簿 - 一个名称正确但不是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

我在这里缺少什么?

1 个答案:

答案 0 :(得分:2)

默认情况下,我认为Workbooks.Add创建的新工作簿不会变为ActiveWorkbook

使用ThisWorkbookActiveWorkbook会让您感到困惑。

我喜欢将工作簿和工作表等内容设置为变量,以便您知道自己处理的内容:)

我无法使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