Saltar al contenido

Copiar 5 columnas especificas de todas las hojas de un libro en otro libro


Recommended Posts

publicado

Buenos dias.

Tengo un libro llamado Ofertas, donde cada hoja del libro corresponde a un presupuesto. Las hojas estan numeradas del 1 al 100 segun el numero del presupuesto. En estas hojas tengo desde la columna A a la H la plantilla del presupuesto y el resto de columnas tienen imagenes, y otros datos lo que hacen el archivo muy pesado.

He creado un libro nuevo llamado Registro de Ofertas que esta en blanco. Lo que busco es mediante una macro copiar todas las hojas del libro Ofertas y pegarlas en el libro Registro de Ofertas, pero solo quiero los datos del rango "A:H" y que me respete el nombre de cada hoja.

Se os ocurre algo??

Un saludo

publicado

Gracias por la respuesta el problema es que el archivo registro de ofertas siempre existira. Por ejemplo si creo una hoja nueva en el libro de ofertas, debere actualizar el archivo de registro de ofertas.

La macro que necesito es una macro que me seleccione todas las hojas de un libro, las copie y luego las pegue en el libro registro de ofertas, pero tiene q seleccionar todas las hojas del libro Ofertas las cuales iran incrementandose.

publicado

Buenos dias a todos.

He conseguido crear la macro segun el consejo de Armando y funciona, el problema es que tarda demasiado en ejecutarse, os pongo el codigo y continuo explicando:

Sub registro de oferta()

' primero quito las alertas para que al guardar no me pida confirmacion.
Application.DisplayAlerts = False
' guardo el archivo "Oferta" para tener la copia original siempre actualizada.
ActiveWorkbook.Save

' ahora viene lo de guardar como, guardo el archivo con el nombre de Registro Ofertas
ActiveWorkbook.SaveAs Filename:= _
"\\server\Users\Pepe.SERVER\Documents\Pepe\Pepe\Dpto. Comercial\PRESUPUESTOS\OFERTAS\2013\Registro Ofertas.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

' En este paso voy a borrar 3 hojas que no quiero almacenar en el archivo de registro
Workbooks("Registro Ofertas.xlsx").Activate

Worksheets("leyenda").Select
ActiveWindow.SelectedSheets.Delete
Worksheets("control").Select
ActiveWindow.SelectedSheets.Delete
Worksheets("DIBUJO").Select
ActiveWindow.SelectedSheets.Delete

'Ahora voy a borrar las columnas que me sobran donde estan las imagenes y otros datos que no son necesarios registrar, aqui es donde se vuelve lenta la macro

Dim ws As Worksheet

For Each ws In ActiveWorkbook.Sheets

ws.Select
ActiveSheet.DrawingObjects.Delete
'Con esto borro las imagenes que existen en cada hoja

ActiveSheet.Range("I:BO").Select
Selection.Delete Shift:=xlToLeft
'Con esto borro las columnas que no me hacen falta de cada hoja

Next

ActiveWorkbook.Save
ActiveWorkbook.Close
Application.DisplayAlerts = True[/CODE]

El resumen es que me sucede lo que me venia temiendo, al copiar el archivo entero con todas las imagenes, la tarea de borrar todas las columnas que no me hacen falta y todas las imagenes hoja por hoja, se vuelve muy pesada y hace lenta la macro. Por esto lo que yo buscaba es que teneindo los 2 archivos (Ofertas y Registro de Ofertas), solamente mediante el codigo se copien las columnas de cada hoja que necesito.

Las columnas que necesito copiar van desde la A a la H y esto lo tengo que hacer hoja por hoja desde un libro al otro. el nombre de las hojas tambien se han de copiar.

Un Saludo

publicado

Sube un ejemplo de cada libro.

¿ Como se ha de copiar el rango A:H ? ¿ Uno debajo del otro ? ¿ Cual es la fila de inicio y la de final ?

publicado

Una forma es, con la grabadora de macros encendida, realizar el procedimiento descrito en el link, otro ejemplo es algo asi:

Sub Formula_Zapper() 
Worksheets.Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveSheet.Select
Application.CutCopyMode = False
End Sub[/CODE]

publicado
Una forma es, con la grabadora de macros encendida, realizar el procedimiento descrito en el link, otro ejemplo es algo asi:

Sub Formula_Zapper() 
Worksheets.Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
ActiveSheet.Select
Application.CutCopyMode = False
End Sub[/CODE]

Armando este codigo no es solo para copiar???

Lo que quiero es seleccionar todas las hojas del libro

publicado

Amigo paiwoked, revisa el archivo anexo a ver si te sirve así; al presionar el botón "COPIAR HOJAS", la macro busca el archivo con el nombre que coloques en la celda B1 y busca todas las hojas cuyo nombre sea numérico y NO ESTE ya en el archivo "Registro Ofertas", copia las columnas A:H y las pega en una nueva hoja (al final) y le coloca el mismo nombre que tenia.

con esto lo que hace es copiar solamente las hojas nuevas que no estan ya copiadas, ahora si quieres copiar siempre todas las hojas, sería realizar un pequeño cambio.

suerte y espero que te sea de ayuda

Registro Ofertas.zip

Archivado

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

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.