Copiar hoja por macros de un libro a otro

Quisiera saber si se puede hacer que una macro busque hojas en varias archivos y copie todos los datos a otro libro

¿Se puede hacer sin que los tres archivos de origen estén abiertos?

¿La macro se pondría solo en el archivo de destino?

Tengo tres archivos y dentro hojas

PROGRAMA1(tiene dos hojas que necesito copiar) "LECHE" "HARINAS"

PROGRAMA2 (tiene una hoja que necesito) "SEMANA"

PROGRAMA3 (tiene una hoja que necesito) "RESULTADO"

Mi archivo se llama PALETAS y las hojas "LECHE1" "HARINAS1" "SEMANA1" "TOTAL"

1 respuesta

Respuesta
2

Tienes pendientes por valorar 3 respuestas.

Podrías valorar esas respuestas para continuar con las siguientes peticiones.

Ya esta. No sabia que tenia que valorar todas.

Si es posible el archivo de origen no estaría abierto, tengo una macro pero solo copia una hoja y tiene otro problema que tienen que estar abiertos los dos libros "donde busca la hoja y donde pasa los datos"

Perdona estoy dándole vueltas y probando cosas

Los libros de origen están abiertos y como todos los meses me cambian el nombre del archivo en función del mes en curso no necesito que busque el archivo concreto ya que cada mes tendría que cambiar la fórmula

Así que resumiendo necesito que copie las hojas

"LECHE" "HARINAS"

"SEMANA"

"RESULTADO"

Mi archivo se llama PALETAS mi archivo no le cambio nunca de nombre y las hojas de destino tampoco

Copiar "LECHE" y pegar en "LECHE1" copiar "HARINAS" y pegar en"HARINAS1"

Copiar "SEMANA" y pegar en"SEMANA1"

Copiar "RESULTADO" y pegar en"TOTAL"

Votar negativamente las respuestas no es valorar.

Si tienes dudas puedes solicitar más información, hasta que esté resuelta la pregunta, pero si no tienes dudas sobre la respuesta, entonces se asume que la pregunta fue contestada satisfactoriamente y entonces valorar adecuadamente la ayuda que se te está brindando.

Las dos que he valorado negativa es porque no se ha solucionado la duda

me puedes ayudar?

Estén cerrados o abiertos los archivos, de cualquier forma, se tiene que saber el nombre del libro, si no tienes el nombre completo, por lo menos el nombre de como comienza o como termina. Por ejemplo:

Programa1 agosto

Programa1 septiembre

Etc.

Entonces voy a poner en la macro que busque en los libros abiertos el que empiece con "Programa1"

Ahora, qué necesitas copiar, ¿todas las celdas de la hoja "LECHE" y que las pegue en la celda A1 de la hoja "LECHE1"?

¿O necesitas que copie un rango de celdas y que se peguen en la primer celda vacía?

Necesito que copie todo (altos de fila y anchos de columa también ya que luego tengo que imprimirlo) en la celda A1 de cada hoja. Antes paso esta macro para que me borre las hojas Si se puede incluir para que se ejecute en las 4 hojas de destino mejor Si no creare otra macro para que ejecute las dos seguidas

Sub BORRAR()
With Range("a:AA")
    .UnMerge    'quita posibles combinaciones
    .Clear      'limpia todo
End With
For Each img In ActiveSheet.Shapes
img.Delete
Next
End Sub

Seria libros que empiecen por PROGRAMA1 copiar las hojas "LECHE"  y "HARINAS" y pasarlas a Libro PALETAS hojas "LECHE1" "HARNAS1"

Segundo libros que empiecen por PROGRAMA2 copiar la hoja "SEMANA" y pasarla a Libro PALETAS hojas "SEMANA1"

Tercero libros que empiecen por PROGRAMA3 copiar la hoja "RESULTADO" y pasarla a Libro PALETAS hojas "TOTAL"

Si da igual cerrados que abiertos mejor cerrados ya que los tres libros son compartidos y yo solo necesito sacar los datos

H o l a:

A lo que me refiero es que estén abiertos o cerrados es necesarios conocer el nombre.

Si están abiertos, solamente busco en los libros abiertos.

Pero si están cerrados, la situación es completamente diferente, me tienes que decir en cuál carpeta están los libros y en ese caso si me tienes que decir, exactamente cuál es el nombre del libro.

Si en una carpeta tienes estos libros:

programa1 mayo.xlsx

programa1 agosto.xlsx

programa1 septiembre.xlsx

¿Cuál libro es el que se va a utilizar?

Entonces necesito:

- La carpeta

- El nombre completo del archivo con todo y extensión.


Sería más sencillo si en una carpeta, por ejemplo tienes únicamente los 3 archivos, por ejemplo:

c:\trabajo\archivos\agosto\

programa1 agosto.xlsx

programa2 agosto.xlsx

programa3 agosto.xlsx

Entonces puedo poner en la macro que lea todos los archivos de la carpeta.


E spero tus comentarios.

Ok entiendo

La ruta no la tengo ya que es para el curro y no la recuerdo,

Pero Los tres archivos están en carpetas diferentes

Te puedo decir algo orientativo y cambiaria yo los nombres

La ruta seria disco N\trabajos\año2015 "PROGRAMA1"

La ruta seria disco N\diferencias\año2015 "PROGRAMA2"

La ruta seria disco N\pendientes\año2015 "PROGRAMA3"

H o l a:

Te anexo la macro

Sub CopiarHojas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    '
    Set l1 = ThisWorkbook
    hojad = Array("LECHE1", "HARINAS1", "SEMANA1", "TOTAL") 'hojas destino
 archo = Array("PROGRAMA1", "PROGRAMA1", "PROGRAMA2", "PROGRAMA3") 'archivos origen
 hojao = Array("LECHE", "HARINAS", "SEMANA", "RESULTADO") 'hojas origen
    For h = LBound(hojad) To UBound(hojad)
        Sheets(hojad(h)).Cells.Clear        'con esta instrucción no es necesario el unmerge
        Sheets(hojad(h)).Cells.UnMerge
        Sheets(hojad(h)).DrawingObjects.Delete
    Next
    '
    ruta = "C:\trabajo\pendientes\año 2015\"
    For i = LBound(archo) To UBound(archo)
        arch = Dir(ruta & archo(i) & "*.xls*")
        If arch <> "" Then
            Set l2 = Workbooks.Open(ruta & arch)
            l2.Sheets(hojao(i)).Cells.Copy l1.Sheets(hojad(i)).[A1]
            l2.Close False
        End If
    Next
    MsgBox "Copias Terminadas", vbInformation, "COPIAR HOJAS"
End Sub

Parece que tengo duplicado el archivo de programa1, pero lo puse así para que lo lea 2 veces una para la hoja leche y otra para la hoja harinas.

S a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas