从一个工作簿中复制工作表并将其保存在名为单元格中的值的新工作簿中
问题描述:
我想从工作簿1复制Sheet2并将其粘贴到新工作簿的Sheet1中,并将新工作簿保存为单元格A1在Sheet2,Workbook 1中。当我点击一个我添加的按钮时,我想让这个宏触发。从一个工作簿中复制工作表并将其保存在名为单元格中的值的新工作簿中
这是我迄今所做的,但它会创建两个工作簿 - 一个用正确的名称,但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
创建的新工作簿默认为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
感谢您的答案,现在就试试吧。 AK454是将用于命名新工作簿的单元格,只是忘记在代码示例中更改它 – 2013-03-12 13:19:20
为什么要放'Output.Worksheets(“Sheet1”)。Delete'? – 2013-03-12 13:20:37
该代码不会将值复制到Sheet1中,它将整个工作表复制到新的工作簿中(由于名称重复,所以被称为“Sheet2(2)”)我删除了'Sheet1',因此可以将新工作表重命名为Sheet1 ' – NickSlash 2013-03-12 13:26:00