我想从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
我在这里缺少什么?
答案 0 :(得分:2)
默认情况下,我认为Workbooks.Add
创建的新工作簿不会变为ActiveWorkbook
。
使用ThisWorkbook
和ActiveWorkbook
会让您感到困惑。
我喜欢将工作簿和工作表等内容设置为变量,以便您知道自己处理的内容:)
我无法使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