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.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Current Donation Goals

    • Raised 0.00 EUR of 130.00 EUR target
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    5    1

  • Crear macros Excel

  • Mensajes

    • Hola, El texto citado no lo termine de entender, la celda adyacente a Z27 se relaciona con la fila A28 de la hoja VTL1 y el resultado 35 de su ejemplo, se obtiene de la fila 8, así que para hacer algo sin complicaciones use la columna BM para devolver ese valor. Aprovechando los parámetros de discriminación que uso usted para pintar las celdas de la fila, podría usar esos mismos en una fila auxiliar y así obtener un valor que podría usar como criterio en alguna función, sin tener que meterse al terreno de los colores del condicional, porque no son los mismos que los de la paleta de colores en cuestiones de código. ¿Entonces una solución con macros no es de su interés? Si cambia de opinión podría colocar el tema en esa sección, querer formular con los colores del formato condicional tiene sus características específicas, sin mencionar que se actualice "sola". Aunque bueno, todavía es posible que algún maestro o usuario avanzado le pase una solución con alguna función personalizada al ver que usted tiene 365. Si le interesa una idea sencilla podría usar un rango en la fila 5: =SI.ERROR(COINCIDIR(K7,CALCULOS!$B$4:$B$35,0),SI(O(DIASEM(K7)=7,DIASEM(K7)=1),1,0)) Eso le daría la opción de usar: =SUMAR.SI($K$5:$AY$5,">=1",K8:AY8) Saludines
    • Estimados amigos espero estén bien   Tengo este archivo que me ayuda a llevar las horas trabajadas al que necesito añadir en la Hoja5 (HHE) una fórmula que me cuente las Horas trabajadas en Días de Descanso (fines de semana y feriados), actualmente mediante una Regla de Formato Condicional se resaltan en amarillo el Dia de Semana y la Fecha de los Días de Descanso sin embargo el inconveniente se me presenta con los días feriados que cambian de posición de acuerdo a la fecha y cuando el mes comienza en día domingo por lo cual necesito una fórmula que me permita sumar los Días de Descanso cuando la Fecha que le corresponda este resaltada en Amarillo la sintaxis sería más o menos esta para la primera semana del mes de Enero de 2025: =SI('VTL1'!$I$7=AMARILLO;'VTL1'!$I8;0) + SI('VTL1'!$J$7=AMARILLO;'VTL1'!$J8;0) + SI('VTL1'!$K$7=AMARILLO;'VTL1'!$K8;0) + SI('VTL1'!$L$7=AMARILLO;'VTL1'!$L8;0) + SI('VTL1'!$M$7=AMARILLO;'VTL1'!$M8;0) + SI('VTL1'!$N$7=AMARILLO;'VTL1'!$N8;0) + SI('VTL1'!$O$7=AMARILLO;'VTL1'!$O8;0) Y así sucesivamente para el resto de las semanas, con los datos actuales el resultado esperado para la primera semana (I8:O8) sería 9 horas mientras que para el mes (Fila8) el resultado esperado seria 35 horas estos resultados deben reflejarse en la Celda “$Z7” de la Hoja5 (HHE) de modo tal que una vez haya completado la totalidad de la fórmula para el resto de las semanas del mes la pueda correr de Z27 hasta Z42 VTL - HHE_101128.xlsx
    • Hola, veo que tienes 365, así que esta forma funcionará   Almacen.xlsx
    • Buenos días  @LeandroA espero estes bien Tengo un caso idéntico al planteado en la siguiente pregunta: Sin embargo, a diferencia de quien planteo originalmente la pregunta al correr el código no obtengo ningún resultado podrían ayudarme a resolver este inconveniente y que al hacer click en el Botón Guardar (CommandButton3) del Formulario RCS (frmrcs) el archivo pdf quede configurado con orientación vertical, márgenes superior, inferior, derecho e izquierdo = 1 y en página tamaño carta. Si acaso influye uso Microsoft Excel LTSC MSO (versión 2209 Compilación16.0.1.15629.20200) de 64 bits Mucho le sabre agradecer la ayuda que me pueda dar  RCS PRUEBA - copia.xlsm
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.