2011-12-09 14 views
16

He encontrado preguntas similares que tratan de copiar una hoja de trabajo completa en un libro y pegarla en otro libro, pero estoy interesado simplemente en copiar una hoja de trabajo completa y pegarla en una nueva hoja de trabajo, en el mismo libro de trabajo.Copie una hoja de cálculo completa en una nueva hoja de cálculo en Excel 2010

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 cálculo 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 toda la hoja de trabajo 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 esto a romper ahora. Cualquier sugerencia o idea sería genial.

+2

Un poco prolijo pero una pregunta bien escrita – aevanko

Respuesta

30

es más sencillo sólo para ejecutar una copia exacta, como a continuación para poner la copia en que la última hoja

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

Lo anterior copiar las células. Si realmente quieres duplicar la hoja completa, entonces yo iría con @brettdj's answer.

+6

Sugiero copiar el rango utilizado con preferencia a todas las celdas. – brettdj

1
'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 
+1

Por cierto, no necesita seleccionar el nuevo libro y la hoja para pegar, solo use 'NewCaseFile.Worksheets (1) .Paste'. –

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

Me gustó mucho @ código de brettdj, pero luego me di cuenta de que cuando he añadido código adicional para editar la copia, que sobrescribía mi hoja original en su lugar. He modificado su respuesta para que el código adicional apuntado al ws1 afecte la hoja nueva en lugar de la original.

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