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

win*_*cki 23 excel vba excel-vba excel-2010

我发现类似的问题涉及在一个工作簿中复制整个工作表并将其粘贴到另一个工作簿,但我感兴趣的是简单地复制整个工作表并将其粘贴到新的工作表 - 在同一工作簿中.

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

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

ThisWorkbook.Worksheets("Master").Cells.Copy
newWorksheet.Paste
Run Code Online (Sandbox Code Playgroud)

我很惊讶转换为.xlsm导致现在破坏.任何建议或想法都会很棒.

bre*_*tdj 36

只需运行如下所示的精确副本就可以将副本放入最后一页

Sub Test()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Master")
ws1.Copy ThisWorkbook.Sheets(Sheets.Count)
End Sub
Run Code Online (Sandbox Code Playgroud)


Jea*_*ett 17

ThisWorkbook.Worksheets("Master").Sheet1.Cells.Copy _
    Destination:=newWorksheet.Cells
Run Code Online (Sandbox Code Playgroud)

以上将复制细胞.如果你真的想复制整张表,那么我会选择@ brettdj的答案.

  • 我建议首先将使用的范围复制到所有单元格. (6认同)

tha*_*s.a 8

' 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"
Run Code Online (Sandbox Code Playgroud)