¿Qué tan posible es hacer ésto con Macros?

4 envíos / 0 nuevos
Último envío
Mancha Azul
Imagen de Mancha Azul
Offline
última acción: Hace 6 años 9 meses
alta: 09/01/2014 - 03:03
Puntos: 135
¿Qué tan posible es hacer ésto con Macros?

Buen día a todos.

Estoy elaborando un libro guía para aprender a manejar el Macros y el Access, quisiera saber qué
tan posible es generar un Macros capaz de:
1)Crear una copia de una hoja del libro.
2)Que quede con un nombre que yo necesito.

Es decir:

Tengo una hoja llamada "Plantilla", donde está lo que debo duplicar. Ahora, quiero que los duplicados tengan otro nombre,
Como por ejemplo: E001, E002, E003, etc...

Llevo éste código y parece funcionar, duplica sin problemas pero no puedo hacer el cambio de nombre automático
y además cuando cancelo la operación en el diálogo que creo marca un error en la Macros, ¿pueden ayudarme?

Éste es el código:

Sub Grab()

    Dim x As Integer

    

    x = InputBox("¿Cuántas solicitudes desea crear?")

    For numtimes = 1 To x

        ActiveWorkbook.Sheets("Plantilla").Copy _

           After:=ActiveWorkbook.Sheets("Plantilla")

    Next

End Sub

 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 31 mins 42 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10900
totalmente posible

tu código crea la copia de la hoja.

como estás declarando las variables, declara también la variable numtimes, modifica la línea donde tienes el Dim

   Dim x As Integer, numtimes as Integer

 

cuando copias la hoja, ésta se convierte en la hoja activa, así que puedes cambiar el nombre por ejemplo así:

  ActiveSheet.Name = "hojacopiada " & numtimes

 

Claro que este nombre daría error si si intentas añadir más hojas, porque habría nombres repetidos.

Pero seguro que tú sabes mejor que yo cómo quieres llamar a cada hoja

 

el conjunto quedaría así:

Sub Grab()

    Dim x As Integer, numtimes As Integer

    

    x = InputBox("¿Cuántas solicitudes desea crear?")

    For numtimes = 1 To x

        ActiveWorkbook.Sheets("Plantilla").Copy _

           After:=ActiveWorkbook.Sheets("Plantilla")

        ActiveSheet.Name = "hojacopiada " & numtimes

    Next

End Sub

 

------
Ya sé Excel, pero necesito más.

Mancha Azul
Imagen de Mancha Azul
Offline
última acción: Hace 6 años 9 meses
alta: 09/01/2014 - 03:03
Puntos: 135
Re: ¿Qué tan posible es hacer ésto con Macros?

Muchas gracias, no conocía esa linea...

Pero si yo necesito que, por ejemplo, cuando cree 4 copias de la hoja "Plantilla" automáticamente aumente un número del nombre, es decir:

Nombre básico : "E"
Nombres de las copias: "E001, E002, E003, E004"

 

¿Podrías por favor explicarme si eso puede hacerse? 
Gracias de antemano :) 

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 31 mins 42 segs
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 10900
Re: ¿Qué tan posible es hacer ésto con Macros?

Para que la numeración tenga un determinado formato, por ejemplo con tres cifras y ceros a la izquierda si es necesario, puedes emplear la funcón Format  de VBA

Siguiendo con el ejemplo anterior, la línea del código donde asignas el nombre a la hoja podría ser algo así:

ActiveSheet.Name = "E" & Format(numtimes,"000")


ese formato que se define con "000" quiere decir precisamente tres cifras, completando siempre con ceros a la izquierda

 

------
Ya sé Excel, pero necesito más.