Подтвердить что ты не робот

Скопируйте весь рабочий лист на новый рабочий лист в Excel 2010

Я нашел похожие вопросы, касающиеся копирования всего рабочего листа в одной книге и вставки его в другую книгу, но мне интересно просто скопировать весь рабочий лист и вставить его в новый рабочий лист - в ту же книгу.

Я в процессе преобразования файла .xls 2003 в 2010.xlsm, а старый метод, используемый для копирования и вставки между листами, не вставляется с правильными высотами строк. Моим начальным обходным путем было прохождение каждой строки и захват высот строк из листа, с которого я копирую, затем прокручиваю и вставляю эти значения для высот строк на листе, к которому я вставляю, но проблема с этим подходом заключается в том, что лист содержит кнопки, которые генерируют новые строки, которые изменяют нумерацию строк, и формат листа таков, что все строки не могут быть только одной ширины.

То, что я действительно хотел бы сделать, это просто скопировать весь рабочий лист и вставить его. Вот код из версии 2003:

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

Я удивлен, что преобразование в .xlsm заставляет это прерываться. Любые предложения или идеи были бы замечательными.

4b9b3361

Ответ 1

Проще просто запустить точную копию, как показано ниже, чтобы вставить копию в качестве последнего листа

Sub Test()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Master")
ws1.Copy ThisWorkbook.Sheets(Sheets.Count)
End Sub

Ответ 2

ThisWorkbook.Worksheets("Master").Sheet1.Cells.Copy _
    Destination:=newWorksheet.Cells

Вышеприведённое копирует ячейки. Если вы действительно хотите дублировать весь лист, я бы пошел с ответом @brettdj.

Ответ 3

' 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"

Ответ 4

'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

Ответ 5

Мне действительно понравился код @brettdj, но потом я обнаружил, что, добавив дополнительный код для редактирования копии, вместо этого он заменил мой оригинальный лист. Я изменил его ответ, чтобы дальнейший код, обозначенный на ws1, повлияет на новый лист, а не на оригинал.

Sub Test()
    Dim ws1 as Worksheet
    ThisWorkbook.Worksheets("Master").Copy
    Set ws1 = ThisWorkbook.Worksheets("Master (2)")
End Sub