¿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.
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».
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)
Enlaces útiles: Ejecutar una macro – Grabador de macros – Editor de Visual Basic – Manual 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"
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)
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