2016-09-29 43 views
2

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

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

这里是为Wb1的“转移到”书和世界银行为工作簿“从转移”。问题是这不是页眉/页脚,图片(标志),或隐藏意味着隐藏的列。

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

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 

感谢

回答

2

这为我工作用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's MVP site

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

编辑对于Move情况下,我最初测试,当我开始于:

Book2     Book3 
Sheet1     Sheet1 

我伤到:

no Book2!    Book3 
         Sheet1 Sheet1 (2) 

编辑Copy,我得到:

Book2     Book3 
Sheet1     Sheet1 Sheet1(2) 

注意,这需要在目标工作簿中已经存在。另外,如果您想在之前复制/移动到之前的现有工作表,而不是之后的,则只需将After更改为Before中的Copy调用即可。

和PS:为了减少挫折就这个问题和未来的项目,使用的名称,如FromWorkbookToWorkbook而不是WbWb1。它可能看起来不多,但根据我的经验,它在调试时大大减少了心理工作量!

+0

击败我吧!这是复制工作簿对象,整个内存与只把数据放到剪贴板上。 – Bmo

+0

我的歉意 - 我原本应该更具体。我想保留原始文件中的工作表副本。该表将基本上复制/粘贴为新的工作簿中的值 – DChantal

+0

@DChantal编辑 - 只需使用'.Copy'而不是'.Move' :) – cxw

0

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

因此,而不是创建一个新的空白wb并添加到它...创建原件的副本,然后从中删除您需要的。

+0

我没有,但我需要两张表最终作为价值观,因为最终有~10个标签反馈到这个。 – DChantal

相关问题