una teclado procedimiento para paginas pagina nueva insertar hoja hacer eliminar crear copiar con como calculo abrir excel vba excel-vba excel-2010

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 .