¿cómo copiar y mover una hoja usando vba?

Puedes copiar y mover una hoja en Excel usando código VBA, y en este tutorial aprenderemos diferentes formas de hacerlo.

Copiar una hoja en el mismo libro de trabajo.

Si desea copiar una hoja en el mismo libro de trabajo, puede usar el siguiente código donde utilizó el método de copia.

 Sheets("Sheet5").Copy Before:=Sheets(1)

En este código, la hoja1 es la primera hoja del libro y, cuando ejecuta este código, copia la hoja con el nombre «Hoja5» antes de la primera hoja del libro.

copiar una hoja en la misma carpeta

Y si quieres copiarlo después de la primera hoja, el código sería el siguiente.

 Sheets("Sheet5").Copy After:=Sheets(1)

Y si quieres copiarlo después de la primera hoja, el código sería el siguiente.

 Sheets("Sheet5").Copy Before:=Sheets("Sheet3") Sheets("Sheet5").Copy After:=Sheets("Sheet3")

Cuando ejecuta este código VBA, copia la «Hoja5» antes y después de la «Hoja3».

código vba si desea copiarlo después de la primera hoja

Con la siguiente línea de código puede copiar una hoja después de la última hoja del libro. Utiliza Sheet.count para obtener el número de hojas y luego usa el recuento para copiar la última hoja.

 Sheets("myNewSheet").Move After:=Sheets(Sheets.Count)
copiar una hoja después de la última hoja en la carpeta

Enlaces útiles: Ejecutar una macroGrabador de macrosEditor de Visual BasicManual de macros personales

Copie una hoja en el mismo libro con un nuevo nombre

Y si desea copiar una hoja y luego cambiarle el nombre instantáneamente, debe usar la propiedad de nombre, como en el siguiente código.

 Sheets("Sheet5").Move Before:=Sheets(1) ActiveSheet.Name = "myNewSheet"
copiar una hoja en el mismo libro con el nuevo nombre

Mover una hoja en el mismo libro

Para mover una hoja en el mismo libro de trabajo, debe utilizar el método de movimiento como el que se muestra en el siguiente código.

 Sheets("Sheet5").Move After:=Sheets(1)
mover-una-hoja-en-la-misma-carpeta

Este código moverá «Hoja5» antes de «Hoja2», como puede ver en la instantánea de arriba.

Copiar una hoja al nuevo libro de trabajo.

Cuando utiliza el método de copia sin definir una hoja en el libro actual, VBA abre un nuevo libro y copia esa hoja en ese libro.

 Sheets("Sheet5").Copy

Y para mover una hoja a un nuevo libro.

 Sheets("Sheet5").Move

Copie varias hojas al nuevo libro de trabajo

Si desea agregar varias hojas al nuevo libro a la vez, use un código como este.

 Sheets(Array("Sheet2", "Sheet3", "Sheet4", "Sheet5")).Copy

El código anterior crea una serie de hojas y luego las copia todas en un nuevo libro.

Copiar una hoja a otro libro de trabajo

Si desea copiar una hoja a otro libro que ya esté abierto, puede mencionar el nombre del libro antes o después del argumento.

 Sheets("Sheet1").Copy Before:=Workbooks("Book1.xlsx").Sheets(1)

El código anterior copia la Hoja1 del libro activo y la agrega antes de la primera hoja de Libro1.xlsx que ya está abierta.

Y si quieres moverlo.

 Sheets("Sheet1").Move Before:=Workbooks("Book1.xlsx").Sheets(1)

Copiar una hoja a un libro cerrado

Hay una manera de copiar una hoja a un libro cerrado y no es necesario abrirlo. Mire el código a continuación.

 Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") Workbooks("Book1.xlsx").Sheets("Sheet2").Copy Before:=mybook.Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub

En este código, tiene la variable myBook y luego un libro de trabajo asignado a ella. Hemos desactivado la actualización de pantalla para que el código pueda realizar la tarea en el backend.

Copie una hoja de otro libro sin abrirlo

De la misma manera, puedes copiar y mover una hoja de un libro cerrado. Mire el código a continuación.

 Sub vba_copy_sheet() Dim mybook As Workbook Application.ScreenUpdating = False Set mybook = _ Workbooks.Open _ ("C:UsersDellDesktopsamplefile.xlsx") mybook.Sheets("mySheet").Copy Before:=Workbooks("Book1.xlsx").Sheets(1) mybook.Close SaveChanges:=True Application.ScreenUpdating = True End Sub

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *