Duplicar hoja y renombrar desde una lista

Su ayuda necesito duplicar una hoja modelo y renombrar a base una lista:

Ejemplo:

Tengo la siguiente lista:

6-A Lengua y Literatura PQ6-A Lengua y Literatura SQ6-A Matemáticas PQ6-A Matemáticas SQ6-B Lengua y Literatura PQ6-B Lengua y Literatura SQ6-B Matemáticas PQ6-B Matemáticas SQ

Quiero duplicar la hoja modelo y coloque el nombre de la lista.

1 Respuesta

Respuesta
1

Te dejo la macro que necesitas. Lee los comentarios y ajusta los nombres y otras referencias que allí menciono.

Sub duplicahojas()
'x Elsamatilde
Application.ScreenUpdating = False
'la lista se encuentra en otra hoja diferente a la modelo. -----AJUSTAR Nombre
Set hox = Sheets("Listas")
'se recorre la lista de nombres a partir de fila 1 de col A------AJUSTAR
For i = 1 To hox.Range("A" & Rows.Count).End(xlUp).Row
    'copia hoja modelo colocando nuevas hacia el final.................AJUSTAR
    Sheets("Plantilla").Copy After:=Sheets(Sheets.Count)
    'nombre a la nueva hoja
    ActiveSheet.Name = hox.Range("A" & i)
    'repite el bucle
Next i
MsgBox "Fin del proceso."
End Sub

Sdos y no olvides valorar las respuestas.

Elsa

PD) Gran cantidad de macros con Bucles desde aquí.

Estimada Elsa, buenos días, tengo el siguiente mensaje de error al momento de ejecutar la macro

En esperas de tus comentarios, anticipo mi agradecimiento.

Att.

Andrés Moncayo

El mensaje es claro. Ya tenés una hoja con ese nombre. Revisa la lista y borra los nombres duplicados. En la lista no debes incluir el nombre de la hoja modelo o Plantilla como nombré en la macro.

De todos modos agregá un control de error para que pueda completar el ciclo. Si aparece algún nombre ya utilizado, la hoja se crea pero quedará con el nombre de la plantilla y un índice, por ejemplo: Plantilla (2)

Sub duplicahojas()
'x Elsamatilde
Application.ScreenUpdating = False
'la lista se encuentra en otra hoja diferente a la modelo. -----AJUSTAR Nombre
Set hox = Sheets("Listas")
'se recorre la lista de nombres a partir de fila 1 de col A------AJUSTAR
       On Error Resume Next
For i = 1 To hox.Range("A" & Rows.Count).End(xlUp).Row
    'copia hoja modelo colocando nuevas hacia el final.................AJUSTAR
    Sheets("Plantilla").Copy After:=Sheets(Sheets.Count)
    'nombre a la nueva hoja
    ActiveSheet.Name = hox.Range("A" & i)
    'repite el bucle
Next i
        On Error GoTo 0
MsgBox "Fin del proceso."
End Sub

Sdos!

Elsa, te comento al ejecutar la macro coge los nombres de las lista que adjunte anteriormente, pero sale error, por que parece que el Excel entiende que son los mismos:

Por ejemplo:

En la lista esta de la siguiente manera

6-A Lengua y Literatura PQ

6-A Lengua y LiteraturaSQ

6-A Matemáticas PQ

6-A Matemáticas SQ

6-B Lengua y Literatura PQ

6-B Lengua y Literatura SQ

6-B Matemáticas PQ

6-B Matemáticas SQ

Att.

Andrés Moncayo

... ¿Dónde está el error? ¿? No lo muestras. Seguramente es otro que no tiene nada que ver con la macro.

Si ya existe una hoja con algún nombre que aparece en la lista igual se creará dejando como nombre la plantilla con el índice.

Lee los comentarios en cada instrucción para hacer los ajustes de nombres de hojas (Plantilla, Listas, etc y todas las referencias de la macro que, como NO INDICASTE en tu consulta debes ajustarlas a tu modelo.

Con esta imagen se observa que el proceso es totalmente correcto para este modelo. Doy por cerrado el tema. Puedes dejar nueva consulta con todos los detalles (imagen y aclaraciones) que pueden diferir con este modelo de EJEMPLO.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas