2016-09-29 61 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

相關問題