Cómo duplicar una hoja en Excel con VBA

¿Alguna vez has deseado simplificar tu trabajo en Excel y automatizar tareas repetitivas? Si es así, estás en el lugar correcto. En este artículo, te mostraremos cómo duplicar una hoja en Excel utilizando VBA, la poderosa herramienta de programación que te permitirá llevar tus habilidades en Excel al siguiente nivel. Con unos sencillos pasos y un poco de código, podrás crear copias de tus hojas de cálculo de forma rápida y eficiente, ahorrando tiempo y aumentando tu productividad. ¡Prepárate para transformar tu experiencia en Excel y dominar esta habilidad esencial!

Bienvenidos a nuestro artículo sobre cómo duplicar una hoja en Excel con VBA. Si eres un usuario de Excel y quieres aprender una forma rápida y eficiente de duplicar hojas en tu archivo, ¡has llegado al lugar indicado! En este artículo te enseñaremos cómo utilizar el lenguaje de programación VBA para copiar hojas de manera automática, ahorrándote tiempo y esfuerzo en tu trabajo diario. ¡No pierdas la oportunidad de simplificar tus tareas y seguir descubriendo las maravillas de Excel!

El tutorial proporciona una colección de macros para duplicar hojas en Excel: copiar y cambiar el nombre según el valor de la celda, copiar varias hojas, copiar una hoja de trabajo activa a otro archivo sin abrirla y más.

Copiar hojas manualmente en Excel es bastante rápido y sencillo… si se realiza sólo una o dos veces. Duplicar varias hojas varias veces es aburrido y requiere mucho tiempo. En esta página encontrará algunas macros útiles para automatizar esta tarea.

Excel VBA para copiar la hoja al nuevo libro

Esta macro de una línea más simple hace exactamente lo que sugiere su nombre: copia la hoja activa en un nuevo libro.

Público Sub CopySheetToNewWorkbook() hoja activa.Copiar
Fin Sub

Copie varias hojas en Excel con VBA

Si desea copiar varias hojas del libro activo a uno nuevo, seleccione todas las hojas de trabajo de interés y ejecute esta macro:

Público Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy
Fin Sub

Excel VBA para copiar hoja a otro libro

Dependiendo de dónde desee insertar la hoja copiada, utilice una de las siguientes macros.

Copiar hoja al principio de otro libro

Esta macro copia la hoja activa antes que todas las demás hojas de trabajo en el archivo de destino, Libro 1 en este ejemplo. Para copiar a otro archivo, reemplace «Book1.xlsx» con el nombre completo de su libro de destino.

Público Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copiar antes:=Libros de trabajo(«Libro1.xlsx»).Hojas(1)
Fin Sub

Copiar hoja al final de otro libro

Este fragmento de código duplica la hoja de trabajo activa y coloca la copia al final de Libro 1. Nuevamente, recuerde reemplazar «Book1.xlsx» con el nombre de su libro de destino.

Público Sub CopySheetToEndAnotherWorkbook() activeSheet.Copiar después:=Libros de trabajo(«Libro1.xlsx»).Hojas(Libros de trabajo(«Libro1.xlsx»).Hojas de trabajo.Contar)
Fin Sub

Nota. Para que las macros funcionen, el libro de destino debe estar guardado en su disco duro o en la red.

Copiar hoja a un libro seleccionado

Para poder copiar la hoja actual a cualquier libro abierto, puede crear un formulario de usuario (llamado Formulario de usuario1) con un Cuadro de lista control (llamado ListBox1) y dos botones:
Cómo duplicar una hoja en Excel con VBA

>A continuación, haga doble clic en el formulario y pegue el siguiente código en la ventana Código:

Público Libro de trabajo seleccionado Como Cadena

Privado Sub UserForm_Initialize() Libro de trabajo seleccionado = «»
ListBox1.Borrar
Para Cada wbk En Aplicación.Libros de trabajo ListBox1.AddItem (wbk.Name)
Próximo
Fin Sub

Privado Sub BotónComando1_Clic()
Si ListBox1.ListIndex > -1 Entonces
Libro de trabajo seleccionado = ListBox1.List(ListBox1.ListIndex)
Fin Si
Yo.Ocultar
Fin Sub

Privado Sub CommandButton2_Click() Libro de trabajo seleccionado = «»
Yo.Ocultar
Fin Sub

Con el formulario de usuario implementado, puede usar una de las siguientes macros para copiar la hoja activa al libro de su elección.

Copiar hoja al comienzo del libro de trabajo seleccionado:

Público Sub CopySheetToBeginningAnotherWorkbook() Cargar UserForm1 UserForm1.Show

Si (UserForm1.SelectedWorkbook <> «») Entonces
activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1)
Fin Si

Descargar UserForm1
Fin Sub

Copiar hoja al final del libro seleccionado:

Público Sub CopySheetToEndAnotherWorkbook() Cargar UserForm1 UserForm1.Show

Si (UserForm1.SelectedWorkbook <> «») Entonces
activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count)
Fin Si

Descargar UserForm1
Fin Sub

Cuando se ejecuta en Excel, la macro le mostrará una lista de todos los libros abiertos actualmente. Seleccione el necesario y haga clic en Aceptar:
Cómo duplicar una hoja en Excel con VBA

>Macro de Excel para copiar hoja y cambiarle el nombre

Cuando copia una hoja en Excel, la réplica recibe un nombre en el formato predeterminado como Hoja1 (2). Las siguientes macros pueden ahorrarle la molestia de cambiar el nombre predeterminado manualmente.

Este código duplica la hoja de trabajo activa, nombra la copia como «Hoja de prueba» (puede reemplazarla con cualquier otro nombre que desee) y coloca la hoja copiada al final del libro de trabajo actual.

Público Sub CopySheetAndRenamePredefinido() activeSheet.Copy After:=Hojas de trabajo(Sheets.Count)
En Error Reanudar Próximo
activeSheet.Nombre = «Hoja de prueba»
Fin Sub

Para permitir al usuario especificar el nombre de la hoja copiadausa este código:

Público Sub Copiar hoja y cambiar nombre()
Oscuro nuevo nombre Como Cadena

En Error Reanudar Próximo
nuevoNombre = CuadroDeEntrada(«Ingrese el nombre de la hoja de trabajo copiada»)

Si nuevoNombre <> «» Entonces
activeSheet.Copy After:=Hojas de trabajo(Hojas.Contar)
En Error Reanudar Próximo
activeSheet.Name = nuevoNombre
Fin Si
Fin Sub

Al ejecutarse, la macro muestra el siguiente cuadro de entrada, en el que escribe el nombre deseado y presiona OK:
Cómo duplicar una hoja en Excel con VBA

>Macro de Excel para copiar hoja y cambiarle el nombre según el valor de la celda

En algunas situaciones, puede resultar más conveniente nombrar una copia con un valor de celda específico, por ejemplo, un encabezado de columna. Para esto, simplemente tome el código anterior y proporcione el valor del celda actualmente seleccionada al cuadro de entrada automáticamente. Al igual que en el ejemplo anterior, la copia se colocará al final del libro activo.
Cómo duplicar una hoja en Excel con VBA

>La parte más complicada sería hacer que los usuarios seleccionen siempre la celda correcta antes de ejecutar la macro 🙂

Público Sub Copiar hoja y cambiar nombre por celda()
Oscuro nuevo nombre Como Cadena
En Error Reanudar Próximo
nuevoNombre = CuadroDeEntrada(«Ingrese el nombre de la hoja de trabajo copiada», «Copiar hoja de trabajo»ActiveCell.Valor)

Si nuevoNombre <> «» Entonces
activeSheet.Copy After:=Hojas de trabajo(Hojas.Contar)
En Error Reanudar Próximo
activeSheet.Name = nuevoNombre
Fin Si
Fin Sub

Alternativamente, puedes codificar la dirección de la celda por el cual se debe nombrar la copia, celda A1 en el siguiente código. Para nombrar la hoja de trabajo copiada según otra celda, reemplace A1 con una referencia de celda adecuada.

Público Sub CopiarHojaYRenombrarByCell2()
Oscuro semanas Como Hoja de cálculo
Colocar semanas = activeSheet activeSheet.Copiar después:=Hojas de trabajo(Hojas.Contar)
Si semanas.Rango(«A1»).Valor <> «» Entonces
En Error Reanudar Próximo
activeSheet.Nombre = semanas.Rango(«A1»).Valor
Fin Si

semanas.Activar
Fin Sub

Macro para copiar hoja de trabajo a un libro cerrado

Esta macro copia la hoja activa al final de un libro cerrado. El nombre de otro libro no se especifica en el código: la macro abrirá la ventana estándar del Explorador de Windows y le permitirá elegir cualquier archivo de destino:
Cómo duplicar una hoja en Excel con VBA

>Después de seleccionar el archivo y hacer clic Abiertola macro copiará la hoja activa y cerrará el libro de destino automáticamente.

Público Sub Copiar hoja al libro de trabajo cerrado()
Oscuro Nombre del archivo
Oscuro libro cerrado Como Libro de trabajo
Oscuro hoja actual Como Nombre de archivo de hoja de trabajo = Aplicación.GetOpenFilename(«Archivos Excel (*.xlsx), *.xlsx»)

Si nombre de archivo <> FALSO Entonces
Aplicación.ScreenUpdating = FALSO

Colocar HojaActual = Aplicación.HojaActiva
Colocar Libro cerrado = Libros de trabajo.Abierto(nombre de archivo) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook.Cerca (Verdadero) Aplicación.ScreenUpdating = Verdadero
Fin Si
Fin Sub

Excel VBA para copiar una hoja de otro libro sin abrirla

Esta macro le permite copiar una hoja de cálculo de otro archivo de Excel sin abrirlo. La hoja copiada se insertará al final del libro actual.

Sólo recuerda hacer un par de reemplazos en el código:

  • C:UsersXXXDocumentsTarget_Book.xlsx debe cambiarse a la ruta real y el nombre del libro desde el cual desea copiar una hoja.
  • La Hoja1 debe reemplazarse con el nombre de la hoja que desea copiar.

Público Sub Copiar hoja del libro de trabajo cerrado()
Oscuro fuenteLibro Como Aplicación de libro de trabajo.ScreenUpdating = FALSO
Colocar sourceBook = Libros de trabajo.Abierto(«C:UsuariosXXXDocumentosTarget_Book.xlsx») libro fuente.Sheets(«Hoja1»).Copiar después:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) libro fuente.Cerca
Aplicación.ScreenUpdating = Verdadero
Fin Sub

Excel VBA para duplicar la hoja varias veces

A veces, es posible que necesites duplicar la misma hoja más de una vez, por ejemplo, para probar diferentes fórmulas en el mismo conjunto de datos. Esto se puede hacer fácilmente con la siguiente macro.

Público Sub DuplicarHojaVariasVeces()
Oscuro norte Como Entero
En Error Reanudar Próximo
n = cuadro de entrada («¿Cuántas copias de la hoja activa quieres hacer?»)

Si norte >= 1 Entonces
Para numero de veces = 1 A n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)
Próximo
Fin Si
Fin Sub

Abra la hoja original, ejecute la macro, especifique cuántas copias de la hoja activa desea realizar y haga clic en DE ACUERDO:
Cómo duplicar una hoja en Excel con VBA

>Cómo duplicar hojas en Excel con VBA

Para copiar una hoja en Excel con una de las macros anteriores, puede insertar el código VBA en su propio libro o ejecutar una macro desde nuestro libro de trabajo de muestra.

Cómo agregar una macro a su libro de trabajo

Para insertar el código en su libro de trabajo, realice estos pasos:

  • Abra la hoja de trabajo que desea copiar.
  • Prensa Alt + F11 para abrir el Editor de Visual Basic.
  • En el panel izquierdo, haga clic derecho Este libro de trabajoy luego haga clic en Insertar > Módulo.
  • Pegue el código en la ventana Código.
  • Prensa F5 para ejecutar la macro.
  • Para obtener instrucciones detalladas paso a paso, consulte Cómo insertar código VBA en Excel.

    Cómo ejecutar una macro desde nuestro libro de trabajo de muestra

    Alternativamente, puede descargar nuestro libro de trabajo de muestra para Duplicar hojas de Excel y ejecute el código desde allí.

    El libro de trabajo de muestra contiene las siguientes macros:

    Copiar hoja a nuevo libro de trabajo – copia la hoja de trabajo actual en un nuevo libro de trabajo.

    Copiar hojas seleccionadas – copia varias hojas que seleccione en un nuevo libro.

    Copiar hoja al comienzo de otro libro de trabajo – copia la hoja activa al comienzo de otro libro.

    Copiar hoja para finalizar otro libro de trabajo – copia la hoja activa al final de otro archivo de Excel.

    Copiar hoja y cambiar nombre – duplica la hoja actual, le cambia el nombre según lo especificado por el usuario y coloca la copia después de todas las demás hojas del libro actual.

    Copiar hoja y cambiar nombre predefinido – duplica la hoja activa, le da un nombre codificado a la copia y la coloca al final del libro actual.

    Copiar hoja y cambiar nombre por celda – hace una copia de la hoja activa y le cambia el nombre según el valor de la celda seleccionada.

    Copiar hoja y cambiar nombre por celda2 – copia la hoja activa y le cambia el nombre según la dirección de celda codificada.

    Copiar hoja en libro cerrado – le permite copiar una hoja a un libro cerrado.

    Copiar hoja de libro cerrado – le permite copiar una hoja de otro archivo de Excel sin abrirlo.

    DuplicarHojaVariasVeces – te permite duplicar una hoja en Excel varias veces.

    Para ejecutar la macro en su Excel, simplemente haga lo siguiente:

  • Abra el libro descargado y habilite el contenido si se le solicita.
  • Abra su propio libro de trabajo y navegue hasta la hoja que desea copiar.
  • En su hoja de trabajo, presione Alt + F8seleccione la macro de interés y haga clic en Correr.
  • Cómo duplicar una hoja en Excel con VBA

    >Así es como puedes duplicar una hoja en Excel con VBA. ¡Te agradezco por leer y espero verte en nuestro blog la próxima semana!

    Usted también podría estar interesado en

    Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

    Cómo duplicar una hoja en Excel con VBA – Preguntas frecuentes

    Preguntas frecuentes sobre cómo duplicar una hoja en Excel con VBA

    1. ¿Qué es VBA y cómo se utiliza en Excel?

    VBA (Visual Basic for Applications) es un lenguaje de programación utilizado para automatizar y personalizar tareas en Excel. Mediante VBA, se pueden escribir macros y realizar acciones específicas para mejorar la funcionalidad de las hojas de cálculo de Excel.

    2. ¿Por qué debería duplicar una hoja en Excel con VBA?

    Duplicar una hoja en Excel utilizando VBA puede ahorrarte tiempo y esfuerzo al permitirte replicar rápidamente el formato, las fórmulas y los datos de una hoja existente. Esto es especialmente útil cuando necesitas crear múltiples hojas con la misma estructura.

    3. ¿Cuál es el código VBA para duplicar una hoja en Excel?

    Para duplicar una hoja en Excel utilizando VBA, puedes utilizar el siguiente código:

    Sub DuplicarHoja() ActiveSheet.Copy After:=ActiveSheet End Sub

    4. ¿Cómo puedo asignar un atajo de teclado para duplicar una hoja en Excel con VBA?

    Para asignar un atajo de teclado a la macro de duplicación de hojas en Excel con VBA, sigue estos pasos:

  • Presiona «Alt + F11» para abrir el Editor de Visual Basic.
  • Haz clic en «Insertar» y selecciona «Módulo» para agregar un nuevo módulo al libro de Excel.
  • Pega el código VBA proporcionado en el módulo.
  • Cierra el Editor de Visual Basic.
  • Ve a «Archivo» y luego a «Opciones».
  • Selecciona «Personalizar cinta de opciones» y luego «Personalizar».
  • En el panel derecho, selecciona «Macros» y haz clic en «Agregar >>».
  • Asigna un nombre a la macro y selecciona un icono.
  • En el campo «Nueva tecla de método abreviado», presiona las teclas que deseas usar como atajo.
  • Haz clic en «Aceptar» para guardar los cambios.
  • 5. ¿Existen recursos adicionales para aprender más sobre VBA en Excel?

    Sí, existen varios recursos en línea que pueden ayudarte a aprender más sobre VBA en Excel:

    [automatic_youtube_gallery type=»search» search=»Cómo duplicar una hoja en Excel con VBA» limit=»1″]
    Aquí tienes un resumen de las macros que puedes utilizar ⁣en VBA para copiar hojas en Excel, así como instrucciones sobre cómo implementarlas en tu libro de trabajo.

    1. ⁤ Copiar hoja al principio de otro libro

    vba

    Public Sub CopySheetToBeginningAnotherWorkbook()

    ActiveSheet.Copy Before:=Workbooks("Libro1.xlsx").Sheets(1)

    End Sub

    2. Copiar hoja al final de otro libro

    vba

    Public Sub CopySheetToEndAnotherWorkbook()

    ActiveSheet.Copy After:=Workbooks("Libro1.xlsx").Sheets(Workbooks("Libro1.xlsx").Worksheets.Count)

    End Sub

    3. Copiar hoja a​ un libro seleccionado

    Para⁣ permitir​ que ⁢el usuario seleccione un libro abierto:

    vba

    Public SelectedWorkbook As String



    Private Sub UserFormInitialize()

    SelectedWorkbook = ""

    ListBox1.Clear

    For Each wbk In Application.Workbooks

    ListBox1.AddItem (wbk.Name)

    Next

    End Sub



    Private Sub CommandButton1
    Click()

    If ListBox1.ListIndex > -1 Then

    SelectedWorkbook = ListBox1.List(ListBox1.ListIndex)

    End If

    Me.Hide

    End Sub



    Private Sub CommandButton2_Click()

    SelectedWorkbook = ""

    Me.Hide

    End Sub

    Luego puedes utilizar estas macros para copiar al​ inicio o⁤ al final del libro seleccionado:

    vba

    Public Sub CopySheetToBeginningAnotherWorkbook()

    Load UserForm1

    UserForm1.Show

    If (UserForm1.SelectedWorkbook <> "") Then

    ActiveSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1)

    End If

    Unload UserForm1

    End Sub



    Public Sub CopySheetToEndAnotherWorkbook()

    Load UserForm1

    UserForm1.Show

    If (UserForm1.SelectedWorkbook <> "") Then

    ActiveSheet.Copy After:=Workbooks(UserForm1.SelectedWorkbook).Sheets(Workbooks(UserForm1.SelectedWorkbook).Worksheets.Count)

    End If

    Unload UserForm1

    End Sub

    4. Copiar hoja y cambiarle el nombre

    Para copiar⁢ una hoja y asignarle un ⁢nombre específico:

    vba

    Public Sub CopySheetAndRename()

    Dim newName As String

    On Error Resume Next

    newName = InputBox("Ingrese el nombre de la hoja de trabajo copiada")

    If newName <> "" Then

    ActiveSheet.Copy After:=Worksheets(Worksheets.Count)

    On Error Resume Next

    ActiveSheet.Name = newName

    End If

    End Sub

    5. Copiar hoja y cambiar nombre según el valor de una celda

    vba

    Public Sub CopySheetAndRenameByCell()

    Dim newName As String

    On Error Resume Next

    newName = InputBox("Ingrese el nombre de la hoja de trabajo copiada", "Copiar hoja de trabajo", ActiveCell.Value)

    If newName <> "" Then

    ActiveSheet.Copy After:=Worksheets(Worksheets.Count)

    On Error Resume Next

    ActiveSheet.Name = newName

    End If

    End Sub

    6. Copiar⁣ hoja a un libro cerrado

    vba

    Public Sub CopySheetToClosedWorkbook()

    Dim fileName As String

    Dim closedBook As Workbook

    Dim currentSheet As Worksheet

    fileName = Application.GetOpenFilename("Archivos Excel (.xlsx), .xlsx")

    If fileName <> False Then

    Application.ScreenUpdating = False

    Set currentSheet = Application.ActiveSheet

    Set closedBook = Workbooks.Open(fileName)

    currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)

    closedBook.Close True

    Application.ScreenUpdating = True

    End If

    End Sub

    7. Duplicar una⁤ hoja varias veces

    vba

    Public Sub DuplicateSheetSeveralTimes()

    Dim n As Integer

    On Error Resume Next

    n = InputBox("¿Cuántas copias de la hoja activa quieres hacer?")

    If n >= 1 Then

    For i = 1 To n

    ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)

    Next i

    End If

    End Sub

    Instrucciones para agregar y ejecutar macros

    1. Abrir el Editor de Visual Basic (VBA): Presiona Alt + F11.
    2. Insertar un nuevo módulo: Haz clic ⁤derecho en «Este libro» o⁢ en cualquier objeto de proyecto y selecciona Insertar > Módulo.
    3. Pegar el código VBA:⁣ Copia⁣ y pega el código de ​las macros que necesitas.
    4. Ejecutar la ⁢macro: Presiona F5 mientras tienes el cursor dentro del código de la macro que deseas ejecutar.

    Con‍ estos⁣ códigos y procedimientos, podrás copiar⁢ y renombrar hojas en Excel de ⁤manera efectiva usando VBA.

    4 comentarios en «Cómo duplicar una hoja en Excel con VBA»

    1. Hakstrof: ¡Qué bueno que lo mencionas! Yo también pensé que VBA era complicado, pero después de leer este artículo lo probé y me quedó claro que es súper útil. La otra vez estaba trabajando en un informe y me salvó duplicar hojas en segundos, ¡realmente me ayudó a ser más rápido con el trabajo!

    2. Yuhui: ¡Totalmente de acuerdo! Yo también le tenía un poco de miedo a VBA, pero después de ver cómo lo explicas, me animé a probarlo y me hizo la vida más fácil. El otro día duplicando hojas para un proyecto y fue súper rápido, sin dudas una gran ayuda. ¡Gracias por compartirlo!

    3. Farran: ¡Exacto! A mí me pasó lo mismo, al principio veía VBA como un monstruo, pero después de seguir este tipo de tutoriales me di cuenta de que es una maravilla. La última vez que lo usé, duplicar varias hojas en un rato me dejó impresionado. ¡Ahora no puedo creer que antes lo hacía manualmente!

    4. Prat: ¡Excelente artículo! La verdad es que nunca había usado VBA para duplicar hojas en Excel, pero una vez que lo probé, me di cuenta de lo mucho que me estaba ahorrando en tiempo. Me costó un poco al principio, pero ahora es una herramienta que uso todo el tiempo.

    Deja un comentario