teclado - Copie una hoja de trabajo completa en una nueva hoja de cálculo en Excel 2010
insertar nueva hoja en excel con el teclado (5)
He encontrado preguntas similares que tratan de copiar una hoja de trabajo completa en un libro de trabajo y pegarla en otro libro de trabajo, pero me interesa simplemente copiar una hoja de trabajo completa y pegarla en una nueva hoja de trabajo, en el mismo libro de trabajo.
Estoy en el proceso de convertir un archivo .xls de 2003 a .xlsm de 2010 y el método anterior utilizado para copiar y pegar entre hojas de trabajo no se pega con las alturas de fila correctas. Mi solución inicial fue recorrer cada fila y tomar las alturas de fila de la hoja de trabajo de la que estoy copiando, luego recorrer e insertar esos valores para las alturas de fila en la hoja de trabajo en la que estoy pegando, pero el problema con este enfoque es que la hoja contiene botones que generan nuevas filas que cambian la numeración de las filas y el formato de la hoja es tal que todas las filas no pueden tener solo un ancho.
Lo que realmente me gustaría poder hacer es simplemente copiar la hoja de trabajo completa y pegarla. Aquí está el código de la versión 2003:
ThisWorkbook.Worksheets("Master").Cells.Copy
newWorksheet.Paste
Me sorprende que la conversión a .xlsm esté causando que esto se rompa ahora. Cualquier sugerencia o idea sería genial.
Es más sencillo ejecutar una copia exacta como la que se muestra a continuación para colocar la copia como la última hoja
Sub Test()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Master")
ws1.Copy ThisWorkbook.Sheets(Sheets.Count)
End Sub
''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
'' 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"
Realmente me gustó el código de @ brettdj, pero luego descubrí que cuando añadía código adicional para editar la copia, sobrescribía la hoja original. He ajustado su respuesta para que el código adicional apuntado a ws1
afectará a la nueva hoja en lugar de la original.
Sub Test()
Dim ws1 as Worksheet
ThisWorkbook.Worksheets("Master").Copy
Set ws1 = ThisWorkbook.Worksheets("Master (2)")
End Sub
ThisWorkbook.Worksheets("Master").Sheet1.Cells.Copy _
Destination:=newWorksheet.Cells
Lo anterior copiará las celdas. Si realmente quieres duplicar toda la hoja, entonces yo elegiría la respuesta de @ brettdj .