Hoja de copia de VBA / Hoja de copia a otro libro de trabajo

Este tutorial cubrirá cómo copiar una hoja u hoja de trabajo usando VBA.

Copiar hoja de trabajo en un nuevo libro de trabajo

Para copiar una hoja de trabajo a un nuevo libro de trabajo:

1 Hojas ("Hoja1"). Copiar

Copiar ActiveSheet en un nuevo libro de trabajo

Para copiar ActiveSheet a un nuevo libro de trabajo:

1 ActiveSheet. Copiar

Copiar varias hojas en un libro nuevo

Para copiar varias hojas en un libro nuevo:

1 ActiveWindow.SelectedSheets.Copy

Copiar hoja dentro del mismo libro de trabajo

Comenzamos mostrándole el ejemplo de copia de Hojas más simple: copiando Hoja (s) a un nuevo Libro de Trabajo. Estos ejemplos a continuación le mostrarán cómo copiar una hoja dentro del mismo libro de trabajo. Al copiar una hoja dentro de un Worbook, debe especificar una ubicación. Para especificar una ubicación, le indicará a VBA que mueva la hoja de trabajo ANTES o DESPUÉS de otra hoja de trabajo.

Copiar hoja antes que otra hoja

Aquí especificaremos copiar y pegar la Hoja antes de la Hoja2

1 Hojas ("Hoja1"). Copiar antes: = Hojas ("Hoja2")

Copiar hoja antes de la primera hoja

En lugar de especificar el nombre de la hoja, también puede especificar la posición de la hoja. Aquí estamos copiando y pegando una hoja antes de la primera hoja en el libro de trabajo.

1 Hojas ("Hoja1"). Copiar antes: = Hojas (1)

La hoja recién creada será ahora la primera hoja del libro de trabajo.

Copiar hoja después de la última hoja

Use la propiedad After para decirle a VBA que pegue la Hoja DESPUÉS de otra hoja. Aquí copiaremos y pegaremos una hoja después de la última hoja del libro de trabajo:

1 Hojas ("Hoja1"). Copiar después: = Hojas (Hojas.Cuenta)

Observe que usamos Sheets.Count para contar el número de Sheets en el libro de trabajo.

Mover hoja

También puede mover una hoja dentro de un libro con una sintaxis similar. Este código moverá Sheet1 al final del libro de trabajo:

1 Hojas ("Hoja1"). Mover después: = Hojas (Hojas.Cuenta)

Hoja de copia y nombre

Después de copiar y pegar una hoja, la hoja recién creada se convierte en ActiveSheet. Entonces, para cambiar el nombre de nuestra nueva hoja, simplemente use ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Hojas ("Hoja1"). Copiar después: = Hojas (Hojas.Cuenta)ActiveSheet.Name = "Última hoja"End Sub

Si el nombre de la hoja ya existe, el código anterior generará un error. En su lugar, podemos usar "On Error Resume Next" para decirle a VBA que ignore el nombre de la Hoja y continúe con el resto del procedimiento:

12345678 Sub CopySheetRename2 ()Hojas ("Hoja1"). Copiar después: = Hojas (Hojas.Cuenta)En caso de error, reanudar siguienteActiveSheet.Name = "Última hoja"En caso de error, vaya a 0End Sub

O use nuestra función RangeExists para probar si el nombre de la hoja ya existe antes de intentar copiar la hoja:

123456789101112131415161718 Sub CopySheetRename3 ()Si RangeExists ("LastSheet"), entoncesMsgBox "La hoja ya existe".DemásHojas ("Hoja1"). Copiar después: = Hojas (Hojas.Cuenta)ActiveSheet.Name = "Última hoja"Terminara siEnd SubFunción RangeExists (WhatSheet como cadena, ByVal opcional WhatRange como cadena = "A1") como booleanoPrueba de atenuación como rangoEn caso de error, reanudar siguienteEstablecer prueba = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0En caso de error, vaya a 0Función final

Hoja de copia y nombre según el valor de la celda

También es posible que desee copiar y nombrar una hoja en función de un valor de celda. Este código nombrará la hoja de trabajo según el valor de la celda en A1

12345678 Sub CopySheetRenameFromCell ()Hojas ("Hoja1"). Copiar después: = Hojas (Hojas.Cuenta)En caso de error, reanudar siguienteActiveSheet.Name = Rango ("A1"). ValorEn caso de error, vaya a 0End Sub

Copiar hoja de trabajo a otro libro de trabajo

Hasta ahora, hemos trabajado copiando Hojas de cálculo dentro de un libro de trabajo. Ahora cubriremos ejemplos para copiar y pegar hojas en otros libros de trabajo. Este código copiará una hoja al comienzo de otro libro de trabajo:

1 Hojas ("Hoja1"). Copiar antes: = Libros de trabajo ("Ejemplo.xlsm"). Hojas (1)

Esto copiará una hoja de trabajo al final de otro libro de trabajo.

1 Hojas ("Hoja1"). Copiar después: = Libros de trabajo ("Example.xlsm"). Hojas (Libros de trabajo ("Ejemplo.xlsm"). Sheets.Count)

Note que reemplazamos 1 con Libros de trabajo ("Example.xlsm"). Sheets.Count para obtener la última hoja de trabajo.

Copiar hoja de trabajo a un libro cerrado

Es posible que también desee copiar una hoja de trabajo a un libro de trabajo que esté cerrado. Este código abrirá un libro de trabajo cerrado para que pueda copiar una hoja en él.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalsoEstablecer libro cerrado = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Hojas ("Hoja1"). Copiar antes: = libro cerrado. Hojas (1)closedBook.Close SaveChanges: = VerdaderoApplication.ScreenUpdating = TrueEnd Sub

Copiar hoja de otro libro sin abrirlo

Por el contrario, este código copiará una hoja de trabajo DE un libro de trabajo cerrado sin que tenga que abrir manualmente el libro de trabajo.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalsoEstablecer libro cerrado = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copiar antes: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalsoApplication.ScreenUpdating = TrueEnd Sub

Tenga en cuenta que en ambos ejemplos deshabilitamos ScreenUpdating para que el proceso se ejecute en segundo plano.

Hoja de Excel duplicada varias veces

También puede duplicar una hoja de Excel varias veces utilizando un bucle.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n como enteroDim i como enteroEn caso de error, reanudar siguienten = InputBox ("¿Cuántas copias desea hacer?")Si n> 0 entoncesPara i = 1 AnActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)próximoTerminara siEnd Sub

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave