Crear hoja nueva con nombre de celada de hoja plantilla

Tengo un libro, con una hoja llamada “PLANTILLA”
En dicha hoja esta la celda C5 en la que introduzco el nº de identificación de un trabajador.
Pretendo:
1.- Que compruebe si la hoja con el num de C5 existe
2.- Si no existe cree una nueva hoja (copia de la hoja “PLANTILLA”) con el numero escrito en C5.
3.- y completar los datos del resto de celdas de la hoja creada.
Creo la siguiente macro:
'Inicio Código-
Sub AgregarHojaNueva()
'
Dim carInvalidos As Variant
Dim Hoja As Worksheet
Dim i As Integer
Dim NombreUnico As Boolean
Dim NombreValido As Boolean
Dim rng As Range
'Establecemos la lista de caracteres inválidos.
carInvalidos = Array(":", "\", "/", "?", "*", "[", "]")
'Congelamos la pantalla.
'
Application.ScreenUpdating = False
'Establecemos el rango q contiene el nombre de la hoja.
'
Set rng = Worksheets("PLANTILLA").Range("C5")
'comprobamos si ya existen hojas con los
'nombres q queremos usar.
'
NombreUnico = True
For Each Hoja In Worksheets
If Hoja.Name = rng.Value Then
MsgBox "Ya existe una hoja con el nombre: " _
& rng.Value
NombreUnico = False
Exit For
End If
Next Hoja
'comprobamos si el nombre contiene
'caracteres inválidos.
'
NombreValido = True
For i = 0 To UBound(carInvalidos)
If InStr(rng.Value, carInvalidos(i)) Then
MsgBox "El nombre " & rng.Value _
& " contiene caracteres inválidos (" _
& carInvalidos(i) & ")."
NombreValido = False
Exit For
End If
Next i
'Creamos las hojas y asignamos los nombres validos.
'
If Not IsEmpty(rng) And NombreUnico And NombreValido Then
Worksheets("PLANTILLA").Copy After:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Name = rng.Value
End If
'Volvemos a la hoja principal.
Range("A1").Activate
End Sub
Al ejecutarlo me manda el error:
Error de Compilación ; el procedimiento externo no es valido
Apareciendo en el editor:
Dim Hoja As Worksheet
Set Hoja = ActiveWorkbook.Sheets
Hoja.Name = Range("C5").Value
No encuentro el error ¿podrías ayudarme a resolverlo?
Gracias

2 respuestas

Respuesta
1

Pásame el archivo desde www.programarexcel.blogspot.com asi lo veo

Te modifique está parte y borre una variables declaradas en thisworkbook que estaba mal declarado, ahora funciona como quieres, prueba y comenta, visita www.programarexcel.blogspot.com ahí encontrarás otros procedimientos que puedes descargar y serán de ayuda.

'Creamos las hojas y asignamos los nombres validos. If Not IsEmpty(rng) And NombreUnico And NombreValido Then 'Worksheets("modulo").Copy After:=Worksheets(Worksheets.Count) Sheets("plantilla").Copy after:=Sheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = rng.Value End If

HE RECIBIDO TU COMENTARIO. ¡A MI NO ME funciona!!! Buaaaaaaa!!!!.

Estoy desesperado y bloqueado.

¿Podrías plantearme algún Macro que me resuelva:

Tengo un libro, con una hoja llamada “PLANTILLA”
En dicha hoja esta la celda C5 en la que introduzco el nº de identificación de un trabajador (alfanumérico)
Pretendo:
1.- Que compruebe si la hoja con el num de identificación de C5 existe
2.- Si no existe cree una nueva hoja (copia de la hoja “PLANTILLA”) con los caracteres escritos en C5.
3.- y completar los datos del resto de celdas de la hoja creada.

Gracias por tu ayuda y perdona mi insistencia

¿Qué error te da? En archivo que te envíe yo ingrese un num en c5 y crea una plantilla cuyonombre es ea hoja . que error te da.

Te agradezco tu ayuda y colaboración. Me seguía enviando el error de compilación que te indicaba en mis anteriores comentarios. Me recogía sentencias de una macro que no procedía. las he elimanado, y solucionado el problema ¡ GRACIAS DESDE ESPAÑA!!!

Respuesta
1

He probado el código que relacionas, y me funciona; no comprendo a que se puede deber tu error, pero ten presente que la longitud máxima del nombre de la hoja es de 31 caracteres. Si la situación persiste, no dudes en volver a escribir. Quedo pendiente de tu éxito. Saludos


No olvides finalizar y puntuar la pregunta

Añade tu respuesta

Haz clic para o