Saltar al contenido

Repartir datos en hojas del libro

publicado

Hola a tod@s,

Sigo creciendo en dudas respecto a la creación de macros. En parte por la "culpa" de [uSER=46507]@Macro Antonio[/uSER] :) que me resuelve todo como si fuera fácil.

El objetivo es copiar una hoja "AA_plantilla" un número de veces determinado (hecho) para en un segundo paso poder copiar los nombres de la hoja (AA_nombres) en las casillas A2 de las hojas que se acaban de crear y renombrar estas nuevas hojas con este nombre.

Esta macro hace perfectamente el paso número 1: copiar la plantilla

"Sub CopiaHoja()

On Error Resume Next

nombreHoja = InputBox("¿Qué hoja quieres copiar?")

For x = 1 To Sheets.Count

If ActiveWorkbook.Sheets(x).Name = nombreHoja Then

ExisteHoja = True

IndiceHoja = x

End If

Next x

If ExisteHoja = True Then

NumeroDeCopias = InputBox("¿Cuántas veces quieres copiar esta hoja?")

For y = 1 To NumeroDeCopias

Nombre = Val(nombreHoja) + y

Sheets(IndiceHoja).Select

Sheets(IndiceHoja).Copy After:=Sheets(Sheets.Count)

Sheets(Sheets.Count).Name = Nombre

Next y

Else

MsgBox "El nombre de la hoja no es correcto o no existe ... aún ...."

End If

End Sub"

Y me he quedado en el paso 2: Copiar los nombres y renombrar las hojas.

"Sub repartir_datos()

Sheets("1").Range("A2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Sheets("1").Cells(2, "A").Value = Sheets("AA_Nombres").Cells(1, "A").Value

End Sub"

Ahí va el fichero de ejemplo también :)

¿Alguna pista?

clientes.rar

Featured Replies

publicado
Sigo creciendo en dudas respecto a la creación de macros. En parte por la "culpa" de [uSER=46507]@Macro Antonio[/uSER] :) que me resuelve todo como si fuera fácil.

jajajaja tá bueno.

  • 3 weeks later...
publicado
  • Autor

Hola a tod@s, sigo sin ver luz al final del túnel.... Estoy probando esta microscópica macro y no encuentro la forma de hacerla funcionar:

Sub repartir_datos_2()
Worksheets("AA_Nombres").Range("a1:a5").Copy Destination:=Worksheets("1:5").Range("a2")
End Sub

Además, ¿cuál sería la propiedad correcta para que estos mismos nombres fueran los nombres de cada hoja? ¿Sheet.Name = "Nombre_de_la_lista" ?

clientes.rar

publicado
  • Autor

Y esta "mini" macro, tampoco funciona para renombrar las hojas:

 

Sub renombre_hojas()

Dim Nombre As String
Nombre = Sheets(1).Name
For i = 1 To Sheets.Count
Sheets(i).Name = Sheets(i).Cells(2, "A").Value
Next

End Sub

** Acabo de solucionar el tema de renombrar las hojas:

Fácil, he incluido este código en la hoja "AA_Plantilla" que copia el nombre de la celda A2 como nombre de la hoja :)

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([A2], Target) Is Nothing Then Exit Sub
ActiveSheet.Name = [A2]
End Sub

 

Ya solo queda repartir los nombres de la lista en las hojas .... ¿Alguna ayuda?

 

clientes.rar

publicado
  • Autor

Ya casi lo tengo: el último paso es copiar el nombre de la hoja en la celda A2. Tengo este código que funciona en cualquier libro, menos en el mío:

 

Sub Nombre_cliente()
For Each hoja In ThisWorkbook.Sheets
hoja.Range("A2").Value = hoja.Name
Next hoja
End Sub

 

Why??? uuufffffff de hecho, al ejecutar esta macro, destruye sin piedad el resultado de las otras macros .....

publicado
  • Autor

Listo!! Ahora si funciona, aunque me queda un detalle: con la última macro me copia el nombre de la hoja en las 2 primeras hojas. 

Lo ideal para mi sería que comenzara en la hoja número 3.

Y ya puestos, ¿se podrían unificar las 3 macros? 

clientes - copia.rar

  • Silvia bloqueó este tema

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.