2011-12-09 43 views
16

Tôi đã tìm thấy các câu hỏi tương tự đối phó với sao chép toàn bộ trang tính trong một sổ làm việc và dán vào sổ làm việc khác, nhưng tôi chỉ muốn sao chép toàn bộ trang tính và dán vào một trang tính mới - trong cùng một sổ làm việc.Sao chép toàn bộ trang tính vào trang tính mới trong Excel 2010

Tôi đang trong quá trình chuyển đổi tệp .xls 2003 thành năm 2010 .xlsm và phương pháp cũ được sử dụng để sao chép và dán giữa các trang tính không dán với chiều cao hàng chính xác. Cách giải quyết ban đầu của tôi là lặp qua từng hàng và lấy chiều cao hàng từ trang tính mà tôi đang sao chép, sau đó lặp lại và chèn các giá trị đó cho chiều cao hàng trong trang tính mà tôi đang dán, nhưng vấn đề với cách tiếp cận này là trang tính chứa các nút tạo ra các hàng mới thay đổi đánh số hàng và định dạng của trang tính sao cho tất cả các hàng không thể chỉ là một chiều rộng.

Điều tôi thực sự muốn làm là chỉ cần sao chép toàn bộ trang tính và dán. Đây là mã từ phiên bản 2003:

ThisWorkbook.Worksheets("Master").Cells.Copy 
newWorksheet.Paste 

Tôi rất ngạc nhiên khi chuyển đổi thành .xlsm đang gây ra lỗi này ngay bây giờ. Bất kỳ đề xuất hoặc ý tưởng sẽ là tuyệt vời.

+2

Một câu hỏi nhỏ nhưng cũng được viết rõ ràng – aevanko

Trả lời

30

Nó là đơn giản chỉ để chạy một bản sao chính xác như dưới đây để đặt bản sao trong như tấm cuối cùng

Sub Test() 
Dim ws1 As Worksheet 
Set ws1 = ThisWorkbook.Worksheets("Master") 
ws1.Copy ThisWorkbook.Sheets(Sheets.Count) 
End Sub 
15
ThisWorkbook.Worksheets("Master").Sheet1.Cells.Copy _ 
    Destination:=newWorksheet.Cells 

trên sẽ sao chép các tế bào. Nếu bạn thực sự muốn sao chép toàn bộ trang tính, thì tôi sẽ đi với @brettdj's answer.

+6

Tôi muốn đề xuất sao chép phạm vi được sử dụng tùy theo tất cả các ô. – brettdj

1
'Make the excel file that runs the software the active workbook 
ThisWorkbook.Activate 

'The first sheet used as a temporary place to hold the data 
ThisWorkbook.Worksheets(1).Cells.Copy 

'Create a new Excel workbook 
Dim NewCaseFile As Workbook 
Dim strFileName As String 

Set NewCaseFile = Workbooks.Add 
With NewCaseFile 
    Sheets(1).Select 
    Cells(1, 1).Select 
End With 

ActiveSheet.Paste 
+1

BTW, bạn không cần phải chọn sổ làm việc và trang tính mới để dán, chỉ cần sử dụng 'NewCaseFile.Worksheets (1) .Paste'. –

6
' Assume that the code name the worksheet is Sheet1 

' Copy the sheet using code name and put in the end. 
' Note: Using the code name lets the user rename the worksheet without breaking the VBA code 
Sheet1.Copy After:=Sheets(Sheets.Count) 

' Rename the copied sheet keeping the same name and appending a string " copied" 
ActiveSheet.Name = Sheet1.Name & " copied" 
1

Tôi thực sự thích @ đang brettdj, nhưng sau đó tôi thấy rằng khi tôi thêm mã bổ sung để chỉnh sửa các bản sao, nó ghi đè lên tấm ban đầu của tôi để thay thế. Tôi đã chỉnh sửa câu trả lời của mình để mã tiếp theo được chỉ tại ws1 sẽ ảnh hưởng đến trang tính mới chứ không phải bản gốc.

Sub Test() 
    Dim ws1 as Worksheet 
    ThisWorkbook.Worksheets("Master").Copy 
    Set ws1 = ThisWorkbook.Worksheets("Master (2)") 
End Sub 
Các vấn đề liên quan