Copiar datos de una hoja en varias hojas

Buenas tardes, esta pregunta es para octavohokage, mira yo se que la pregunta sobre copiar datos de una hoja en varias hojas yo la finalice, pero quería hacerte una consulta, lo hago de esta manera ya que no tengo tu correo, la consulta y pregunta a la vez es la siguiente:

la ultima macro que me enviaste, yo te dije que era con la hoja con nombre 100, pero se puede hacer la macro que yo seleccione la hoja que le quiero hacer la copia y le diga la cantidad de veces que quiero copiarla?

Gracias y disculpa si estoy repreguntando algo que ya estaba finalizada

Rafaelmvt

Respuesta
1

Pues de poder se puede, pásame la rutina que te di para modificarla.

Buenos días, esta es la rutina:

Sub copia2()

Nombre = ActiveSheet.Name

a = InputBox("En cuantas hojas desea pegar la información Origen")

Nombre_2 = Nombre + 1

For k = 1 To a

Sheets("100").Copy After:=Sheets(k)

ActiveSheet.Name = Nombre_2

ActiveSheet.PageSetup.PrintArea = "$A$1:$O$70"

Nombre_2 = Nombre_2 + 1

Next k

Sheets(Nombre).Select

Application.CutCopyMode = False

End Sub

aquí se selecciona la hoja con nombre 100; pero la verdad seria mejor que me diera la opción de entre estas 100 pestañas seleccionar la hoja que yo quiero copiar, y hacer lo mismo que la anterior rutina, colocar después de la hoja 100, la 101,102.103 etc. de acuerdo a las copias que yo le diga.

Otra cosa y disculpa, tengo una macro echa por Ron de Bruin (no se si tu has visitado su pagina, muy buena por cierto); para imprimir paginas impares o pares, pero yo quiero hacerles unas modificaciones, que tendría que explicarte, pero no se si te hago una nueva pregunta o por aquí mismo te la puedo hacer

Saludos y gracias

Rafaelmvt

Ok, esta sería la rutina

Sub copia2()
Nombre = InputBox("Favor indicar el nombre de la Hoja Origen")

A = InputBox("En cuantas hojas desea pegar la información Origen")
Nombre_2 = Nombre + 1
For k = 1 To a
Sheets(Nombre).Copy After:=Sheets(k)
ActiveSheet.Name = Nombre_2
ActiveSheet.PageSetup.PrintArea = "$A$1:$O$70"
Nombre_2 = Nombre_2 + 1
Next k
Sheets(Nombre).Select
Application.CutCopyMode = False
End Sub

No olvides que esta rutina solo sirve para hojas que tengan un nombre numerico, si colocas alguna hoja que tenga por nombre algun texto, la rutina no funcionará.

Buenos días,

Sera entonces que solo me sirva para copiar las hojas de análisis que son de nombre numérico, ya que con otro nombre me dices que no se puede, que la idea original era eso copiar cualquier tipo de hoja, pero si no se puede no importa, y referente a lo que te comente para imprimir que me contestas

Buenos días, mira la acabo de probar pero me esta copiando la hoja en la parte de atrás y no detrás de la hoja numero 100, te explico el libro tiene las siguientes hojas:

datos

rendimientos

presupuestos y

elementos de costos

después de estas hojas vienen 100 hojas mas; que son los 100 análisis o partidas, es decir la hoja 1,2,3,4,5,6,7,8,9 etc, etc hasta llegar a la hoja numero 100, que es el ultimo análisis o partida; ahora bien yo le digo que me copie el análisis 1, hace la copia 101, pero me coloca esta hoja 101 después de la hoja datos.y no después de la hoja 100 Porque?

coño mi pana y disculpe tanta joda

Rafaelmvt

Te explico que hace la macro.

1) Te pregunta el nombre de la hoja que quieres copiar y en número copias que deseas hacer

2) Busca la hoja que has indicado, realiza la copia y la pega una hoja después de la hoja que esta copiando, pensemos que tienes la hoja 100, 200 y 300. Cuando le dices que corra la macro en la hoja 100, las copias deberían aparecer después de la hoja 100, es decir el orden sería 100,101,102,103,200, y 300. Si lo que necesitas es que las copias aparezcan luego de la hojas 300, es decir, siempre luego de la última hoja habría que modificar la macro, pero debes decirme si es eso lo que necesitas.

3) También veo un problema en la macro por lo que leo en tus mensajes: Si por ejemplo tienes las hojas 1,2,3,4,5 y quieres que se haga la copia de la hoja 1, vas a generar un error en la macro, ya que me habías indicado que querías que la macro sume un número al nombre de las nuevas copias, es decir las nuevas copias se llamarías 2,3,4, etc. Y como esos nombres ya existen generarías un error.

Lo de la impresión preferiría otra preguntan porque incluso te la puede contestar cualquier usuario experto.

Buenos días, te aclaro lo siguiente, lo que explicas arribas es lo correcto,

por ejemplo; yo quiero copiar la hoja 1, solo una vez, la copia debería colocarse al final de las hojas; ya que la ultima hoja es la numero 100, entonces se crea la hoja 101, si yo quiero otra copia; por ejemplo de la hoja 5, pero necesito dos copias de ella; debería hacerme las copias y colocarlas después de la 101 que ya se creo y ahora es la ultima hoja, entonces la copia de la numero 5 seria la 102,103, quedando la 103 de ultima, entonces las copias siguientes serán después de la 103, pero igual en orden,

lo que pasa en esta ultima macro que me enviaste, es que no coloca la copia después de la hoja 100, sino después de la hoja datos. La idea es que tome siempre la ultima hoja como base

me explico?

Gracias

Rafaelmvt

Me he complicado de tiempo, pero te paso lo que creo que debería funcionar, no le he probado, pero por ahora no voy a poder responder.

Sub copia2()
Nombre = InputBox("Favor indicar el nombre de la Hoja Origen")
A = InputBox("En cuantas hojas desea pegar la información Origen")
Nombre_2 = Sheets(Sheets.Count).Name + 1
numero = ActiveSheet.Index
For k = numero To a
Sheets(Nombre).Copy After:=Sheets(k)
ActiveSheet.Name = Nombre_2
ActiveSheet.PageSetup.PrintArea = "$A$1:$O$70"
Nombre_2 = Nombre_2 + 1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas