将工作表传输到新的工作簿

令人难以置信的新手与Excel VBA。 我在许多不同的地方发现了这个问题,但似乎无法操纵我尝试工作的代码。 从本质上讲,我有一个工作簿创build一个新的工作簿,完全复制一张工作表,保存该工作簿,然后需要从原始工作簿传输第二个工作表。 我已经完成了这个:

Wb1.Sheets("Scorecard").Range("A1:M37").Value(11) = Wb.Sheets("Scorecard").Range("A1:M37").Value(11) 

其中Wb1是“转移”书籍,Wb是“转移”工作簿。 问题是这不是标题/页脚,图片(标识),或隐藏的列意味着隐藏。

我已经尝试过了,但似乎打开另一本书,并冻结我的系统,并打开第三本书:

 Wb.Sheets("Scorecard").Copy Wb1.Sheets("Scorecard").PasteSpecial xlPasteValues 

我觉得我错过了一些非常明显的东西,但是我厌倦了把头撞在墙上。 完整的代码如下:

 Sub NewWb() Dim Aname As String Dim HospName As String Dim DateDone As String Dim xPath As String Dim Wb As Workbook Dim Wb1 As Workbook Set Wb = ThisWorkbook xPath = Application.ActiveWorkbook.Path Aname = "CS Diversion Prevention Assessment" HospName = Sheets("Hospital ID").Range("I8") DateDone = Replace((Sheets("Hospital ID").Range("I13").Text), "/", "-") Application.ScreenUpdating = False ActiveWorkbook.Sheets("Compliance Checklist").Copy With ActiveSheet.UsedRange .Value = .Value End With ActiveSheet.Shapes("Button 1").Delete Sheets.Add.Name = "Scorecard" ActiveWorkbook.SaveAs Filename:=xPath & "\" & HospName & "." & Aname & "." & DateDone & ".xlsx" Set Wb1 = Workbooks.Open(xPath & "\" & HospName & "." & Aname & "." & DateDone & ".xlsx") Wb.Activate 

提前致谢

这在Excel 2013中适用于我,使用Worksheet.Copy方法。 我也尝试过使用Worksheet.Move方法,但移动工作表(!)需要大约10秒的时间。

 Public Sub copy_it_buster() Dim to_copy As Worksheet, copy_after As Worksheet Set to_copy = Workbooks("Book2").Sheets(1) ' Or whatever worksheet you're moving from Set copy_after = Workbooks("Book3").Sheets(1) ' Or whatever worksheet you want to copy after. ' Note that this is in a different workbook! to_copy.Copy After:=copy_after 'to_copy.Move After:=copy_after ' if you don't want to keep it where ' it was originally End Sub 

编辑2 :复制后,将所有公式转换为平坦值,请尝试Ron de Bruin的MVP网站 :

 dim sh as Worksheet set sh = ' whatever your new worksheet is With sh.UsedRange .Value = .Value End With 

编辑对于我最初testing的Move案例,当我开始:

 Book2 Book3 Sheet1 Sheet1 

我结束了:

 no Book2! Book3 Sheet1 Sheet1 (2) 

编辑 Copy ,我得到:

 Book2 Book3 Sheet1 Sheet1 Sheet1(2) 

请注意 ,这需要目标工作簿已经存在。 另外,如果您想复制/移动到现有工作表之前而不是之后 ,只需在Copy呼叫中更改BeforeBefore

和一个PS :为了减less对这个和未来项目的挫折感,使用FromWorkbookToWorkbook这样的名字而不是WbWb1 。 看起来似乎不多,但以我的经验来看,它在debugging的同时大大减less了心理工作量!

您是否考虑将源工作簿(Wb)保存/复制为新工作簿(Wb1),然后编辑新工作簿?

所以,而不是创build一个新的空白,并添加到它…创build一个原件的副本,然后从中删除你需要的东西。