2013-03-12 59 views
0

我想从工作簿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 

我在这里错过了什么?

回答

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 
+0

感谢您的答案,现在就试试吧。 AK454是将用于命名新工作簿的单元格,只是忘记在代码示例中更改它 – 2013-03-12 13:19:20

+0

为什么要放'Output.Worksheets(“Sheet1”)。Delete'? – 2013-03-12 13:20:37

+0

该代码不会将值复制到Sheet1中,它将整个工作表复制到新的工作簿中(由于名称重复,所以被称为“Sheet2(2)”)我删除了'Sheet1',因此可以将新工作表重命名为Sheet1 ' – NickSlash 2013-03-12 13:26:00

相关问题