Jump to content
Sign in to follow this  
Sebastianss

Ciclo para copiar y pegar

Recommended Posts

Tengo un libro en excel 2010 con 170 hojas, cada una con Nombre

Grabé una macro (Ciclo_copiar_pegar) para copiar el contenido de cada hoja y pegarlo en la Hoja Consolidado, coloreando de amarillo la primera fila del contenido de cada hoja.Sin embargo, con ese código no puedo escribir las iteaciones para evitar hacerlo en forma manual. Como el rango de cada hoja es diferente, usé Range(Selection, Selection.End(xlDown)).Select

Mucho les agradezco su ayuda.

Ciclo_copiar_pegar.txt

Share this post


Link to post
Share on other sites

Hola Tese.

Duda Desafortunadamente mi ordenador personal se dañó y debí rehacer el trabajo en otro ordenador paso a paso.

Lo que estoy buscado es un proceso que haga lo siguiente

Escribir el nombre de la hoja en la columna Nombre.

Escribir 2014 en la columna Año.

Luego copiarlos registros de cada hoja y pegarlos en la Hoja Consolidado.

He coloreado de rojo los datos que necesito que escriba en cada campo de cada hoja, asi como en la hoja Consolidado.

Incluyo ejemplo en formato excel 2010.

Muchas gracias por su ayuda

Pureba.zip

Share this post


Link to post
Share on other sites

Hola Don Armando.

El Código funciona excelente.

Sin embargo, originalmente, como indiqué en mi primer mensaje, en cada Hoja <> a Consolidado los campos Nombre y Año no tienen registros.

Por ello, una instrucción debe copiar el Nombre de cada Hoja y pegarlo en el campo Nombre.

Además, en el campo Año, escribir 2104 .

Como prueba en el Rango ("A1") de cada Hoja escribí su nombre y luego di click en la esquina inferior derecha, accion que copió el nombre hacia abajo.

En el archivo adjunto, los campos Nombre y año no tienen registros.

Me parece (ignoro si es un For dentro de un IF, o un If dentro de un For, o un While) que esas dos acciones (desconozco la sintaxis y dónde colocarlas,) pueden incluir:

Range("B" &????).Value= WorkSheet.Name

Range("C" &????).Value= 2014.

Lo anterior, lo intuyo basado en decenas de ejemplos que he investigado en este Foro.

También, desconozco si se debe hacer en dos procedimientos.

Finalmente correr el código que recomiendas.

Sub Consolidado()

Application.ScreenUpdating = False

For Each Sheet In ThisWorkbook.Worksheets

If Sheet.Name <> "Consolidado" Then Sheet.Cells(Rows.Count, 1).End(xlUp).CurrentRegion. _

Offset(1).Resize(, 2).Copy Sheet1.Range("A" & Rows.Count).End(xlUp).Offset(1)

Next Sheet

Application.ScreenUpdating = True

End Sub

Muchas gracias por tu valiosa ayuda

Prueba999b.zip

Share this post


Link to post
Share on other sites

Hola Sebastian, me base en lo que venia en el ejemplo, de cualquier manera es muy simple, agrega estas 2 lineas antes de Next Sheet:

[A2:A57] = ActiveSheet.Name
[B2:B57] = 2014[/CODE]

Avisa si se te dificulta, te sera muy util leer alguno de los manuals disponibles en el foro.

Share this post


Link to post
Share on other sites

Hola Armando.

La instrucción

[A2:A57] = ActiveSheet.Name

[b2:B57] = 2014

En el Campo Nombre escribe Consolidado. Lo que necesito es que en el Campo Nombre escriba el nombre de la Hoja que originó los datos.

Por otra parte, esa instrucción solo copia hasta la celda 57.

Originalmente cada Hoja tiene un nombre, pero, los campos Año y Nombre están vacíos. Entonces como primer paso, un código debe, en cada hoja, copiar el nombre y pegarlo en el campo Nombre y en el Campo Año escribir 2014, hasta la última fila con datos (instrucción para los dos campos).

Voy a buscar y a estudiar los manuales que recomiendas.

Muchas gracias por tu amable y valiosa ayuda. Saludos

Share this post


Link to post
Share on other sites

Amigo @[uSER=33929]Sebastianss[/uSER], cambia el codigo del amigo @[uSER=136970]Armando Montes[/uSER], por este otro, es simplemente una pequeña modificación para que copie el nombre de la hoja y el año; suerte

Sub Consolidado()
Application.ScreenUpdating = False
For Each Sheet In ThisWorkbook.Worksheets
If Sheet.Name <> "Consolidado" Then

Sheet.Cells(Rows.Count, 3).End(xlUp).CurrentRegion.Offset(1).Resize(Sheet.Cells(Rows.Count, 3).End(xlUp).Row - 1, 1).Value = Sheet.Name
Sheet.Cells(Rows.Count, 3).End(xlUp).CurrentRegion.Offset(1, 1).Resize(Sheet.Cells(Rows.Count, 3).End(xlUp).Row - 1, 1).Value = 2014

Sheet.Cells(Rows.Count, 3).End(xlUp).CurrentRegion. _
Offset(1).Copy Sheet1.Range("A" & Rows.Count).End(xlUp).Offset(1)

End If
Next Sheet
Application.ScreenUpdating = True
End Sub[/CODE]

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png