将整个工作表复制到Excel 2010中的新工作表

我发现了类似的问题,在一个工作簿中复制整个工作表并将其粘贴到另一个工作簿中,但是我只是简单地复制整个工作表并将其粘贴到新的工作表中 – 在同一个工作簿中。

我正在将2003 .xls文件转换为2010 .xlsm,而用于在工作表之间复制和粘贴的旧方法不会粘贴正确的行高。 我最初的解决方法是循环遍历每一行,并从我复制的工作表中获取行高,然后循环并插入工作表中我所粘贴的行高的值,但这种方法的问题是工作表包含的button会生成更改行编号的新行,并且工作表的格式使得所有行不能只是一个宽度。

我真的希望能够做的只是复制整个工作表并粘贴它。 以下是2003版本的代码:

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

我很惊讶,转换为.xlsm导致这个现在打破。 任何build议或想法将是伟大的。

只要运行一个像下面这样的副本就可以将副本放在最后一张表格中

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

以上将复制单元格。 如果你真的想复制整个表格,那么我会去@ brettdj的答案 。

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

我真的很喜欢@ brettdj的代码,但是后来我发现,当我添加额外的代码来编辑副本时,它改写了原来的表单。 我已经调整了他的答案,所以进一步的代码指向ws1将影响新的工作表,而不是原来的。

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