Como copiar y renombrar una hoja en excel con una macro

Se como copiar una hoja en el mismo libro con una macro pero no se como hacer para que cuando se copie obtenga el nombre de una celda; esta es la macro que estoy utilizando

Sub Macro5()
'
' Macro5 Macro
'

'
Sheets("GENÉRICO").Select
Sheets("GENÉRICO").Copy After:=Sheets(1)
End Sub

Respuesta

Sub CopyRenombre()
Application.ScreenUpdating = False
Sheets("Hoja1").Copy After:=Sheets(1)

HojaNuevaN = Hoja1.Range("A1").value ' Aca colocas la celda que tiene el nombre
ActiveSheet.Name = HojaNuevaN
Sheets("Hoja1").Select
Application.ScreenUpdating = True
End Sub

2 respuestas más de otros expertos

Respuesta

.11/10/16

Buenas tardes,

Asumiré que la celda de donde toma el nombre está en la misma hoja duplicada.

En tal caso, la rutina que buscas es la siguiente:

Sub DupHoja()
'---- Variables de configuración:
'=== Modifica estos datos de acuerdo a tu proyecto:
CeldaNombre = "F7" 'celda de donde toma el nombre a dar a la nueva hoja
'---- fin Variables
'
'---- inicio de rutina:
Sheets("GENÉRICO").Copy after:=Sheets(1) 'copia siempre despues de la hoja 1
ActiveSheet.Name = Range(CeldaNombre).Value ' coloca el nombre indicado en la celda
End Sub

Una variante para que deje la hoja nueva justo detrás de la actual:

Sub DupHoja()
'---- Variables de configuración:
'=== Modifica estos datos de acuerdo a tu proyecto:
CeldaNombre = "F7" 'celda de donde toma el nombre a dar a la nueva hoja
'---- fin Variables
'
'---- inicio de rutina:  
Sheets("GENÉRICO").Copy after:=ActiveSheet 'copia despues de la hoja actual  
ActiveSheet.Name = Range(CeldaNombre).Value ' coloca el nombre indicado en la celda  
End Sub

Y esta otra, deja la hoja copiada al final del libro:

Sub DupHoja()
'---- Variables de configuración:
'=== Modifica estos datos de acuerdo a tu proyecto:
CeldaNombre = "F7" 'celda de donde toma el nombre a dar a la nueva hoja
'---- fin Variables
'
'---- inicio de rutina:  
Sheets("GENÉRICO").Copy after:=Sheets(Sheets.Count) 'copia al final del libre  
ActiveSheet.Name = Range(CeldaNombre).Value ' coloca el nombre indicado en la celda  
End Sub

Prueba la que mejor te sirva y dime si anduvo OK.

Un abrazo

Fernando

(Buenos Aires, Argentina)

.

Respuesta

H o l a:

Te paso la macro 

Sub copiado()
If [A1] = "" Then Exit Sub
For Each hoja In ThisWorkbook.Worksheets
    If [A1] = hoja.Name Then
        MsgBox "hoja ya existe"
        Exit Sub
    End If
Next
Set h1 = Sheets("GENÉRICO")
h1.Copy After:=Sheets(1)
ActiveSheet.Name = [A1]
End Sub

cambia el nombre de la celda para la hoja en mi caso le puse la A1 

[A1]

La macro valida si ya existe la hoja y si está en blanco para evitar errores

Me comentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas