Al organizar datos en libros de trabajo, no es raro copiar hojas de trabajo de un libro a otro. De hecho, el comando Mover o Copiar hoja (visible cuando hace clic con el botón derecho en una pestaña de la hoja de trabajo) es uno que uso con bastante frecuencia, y apostaría a que otros lo usan con la misma frecuencia.

¿Cómo, entonces, copiar hojas de trabajo dentro de una macro? La respuesta es utilizar el método Copiar con una hoja de trabajo individual o un grupo de hojas de trabajo.

Por ejemplo, el siguiente código de macro copiará la hoja de trabajo seleccionada actualmente a un nuevo libro de trabajo:

ActiveSheet.Copy

Eso es; una sola línea es todo lo que se necesita para copiar la hoja de trabajo a un libro nuevo sin nombre. Después de ejecutar la línea, se selecciona el nuevo libro de trabajo y puede guardarlo usando un código similar al siguiente. La primera línea del código guarda el libro de trabajo y la segunda lo cierra.

ActiveWorkbook.SaveAs Filename:="MyNewFile.xlsm", _   FileFormat:=xlOpenXMLWorkbookMacroEnabled ActiveWindow.Close

Si desea copiar una hoja específica a otro libro de trabajo, hágalo especificando el nombre de la hoja que desea copiar, en lugar de usar el objeto ActiveSheet:

Sheets("Sheet1").Copy

Este ejemplo copia la hoja de trabajo denominada Hoja1, de la colección Hojas, en un nuevo libro. A continuación, puede guardar el nuevo libro de trabajo, como ya se explicó.

El método Copiar, cuando se usa con hojas de trabajo, no se limita a copiar una sola hoja a la vez. Si tiene un grupo de hojas seleccionadas, aún puede usar una sola línea de comando para copiarlas todas en un nuevo libro de trabajo.

Eso es lo que se hace en esta macro:

Sub CopyWorkbook()

Dim sCopyName As String

sCopyName = "My New Workbook.xlsm"



SelectedSheets.Copy     ActiveWorkbook.SaveAs Filename:=sCopyName, _       FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Tenga en cuenta el uso del comando Copiar. La macro funcionará tanto si tiene una hoja de trabajo seleccionada como si tiene cincuenta; No importa. Si desea copiar todas las hojas de trabajo de un libro a otro, todo lo que necesita hacer es realizar un solo cambio en la macro, en la línea donde se invoca el método Copiar:

Sheets.Copy

Esto copia toda la colección de Hojas, que consta de todas las hojas de trabajo del libro.

Cabe señalar que el método Copiar no es solo para copiar hojas de trabajo en un libro nuevo; también se puede usar para copiar hojas de trabajo dentro del mismo libro de trabajo. Lo único que debe hacer es especificar en qué lugar del libro de trabajo actual desea hacer la copia:

ActiveSheet.Copy After:=Sheets("Sheet7")

Esta línea de código copia la hoja de trabajo activa en el mismo libro de trabajo para que aparezca después de la hoja de trabajo llamada Hoja7. Si es más apropiado para sus necesidades, puede especificar la hoja de trabajo antes de la cual se debe colocar la copia:

ActiveSheet.Copy Before:=Sheets("Sheet7")

Esto da como resultado que la hoja de trabajo se coloque antes de Sheet7 en lugar de después.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (11856) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Copying_Worksheets_in_a_Macro [Copiando hojas de trabajo en una macro].