Alimentar el contenido de toda la hoja de un libro con la hoja de otro libro estando cerrado
Necesito una macro que permita alimentar todas las celdas de una hoja (valores, fórmulas, formato, colores) con la información de otra hoja que se encuentra en otro libro. El libro(libroorigen) donde se sacaría la información estaría cerrado, solo estaría abierto el libro (libro destino) donde se recibiría la información.
Es decir, que la celda A1 del libro destino, sea igual a la información del libro origen, y así con todas las celdas del libro. Incluyendo valores, formatos, fórmulas, colores de celdas. Y que al abrir el libro destino, se actualice de manera automática con la información del libro origen.
1 respuesta
Estimado ya te envié 2 respuestas y no has valorado las respuestas, incluso una de ellas ya no se ve.
Listo, lo que pasa es que aún no resuelvo mi problema con precisión en base a lo que necesito, todas mis preguntas, han sido sobre el mismo tema, ahora estoy probando con la opción de Datos-Conexiones, pero aún no logro tener éxito.
Lo que necesito es que se alimente el contenido de toda la hoja del libro origen (todas las celdas) a una hoja del libro destino que tiene el mismo nombre.
Tengo 100 hojas con la misma situación, entonces necesito alimentar 100 hojas del archivo origen, a las 100 hojas que tienen el mismo nombre en el archivo destino.
Estas 100 hojas están en 6 archivos distintos que necesito aparezcan con información actualizada en todo momento en el archivo concentrador.
No se si logre explicarme con esto
Pues, sigo sin entender.
Ahora yo te explico.
Tienes el libro "x". En el libro "x" tienes la hoja "prueba"
Tienes el libro "consolidar". En el libro "consolidar" tiene la hoja "prueba".
¿Hasta todo claro?
Para entender lo que quieres responde lo siguiente.
Después de correr la macro o la conexión de datos, ¿quieres qué la hoja "prueba" en ambos libros sean iguales? ¿Completamente iguales?
Si no es eso lo que quieres entonces, explícame más despacio.
Ya me llegó la respuesta, es exacto lo que necesito hacer, que queden completamente iguales, y que al abrir el libro "consolidar" se actualice de manera automática y que la hoja "prueba" tenga el contenido exacto (valores, fórmulas, colores, formatos) de la hoja "prueba" del libro "x".
Tengo que hacer esto con 100 hojas que están distribuidas en 6 libros, estos 100 casos es hacer lo mismo.
Yo puedo cambiar los nombres de los libros en la macro y hacer muchas o no se cual sea la mejor opción, ¿ahora puedes comprender mejor lo que necesito?
¿Entonces la macro te funciona?
Si es así, entonces pon la siguiente macro en los eventos de thisworkbook
Private Sub Workbook_Open() CargarHojas End Sub
La macro anterior se ejecuta cuando abres el libro, a su vez ejecutará la macro CargarHojas, la macro CargarHojas abrirá todos los libros y copiará todas las hojas, de esa forma en el libro "Global" tendrás las 100 hojas.
Instrucciones para poner la macro en los eventos ThisWorkbook
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a ThisWorkbook
- Del lado derecho copia la macro
Sal u dos
Buen día, pero en donde pondré el origen de los libros??
Como sabe la macro que debe jalar la información de los 6 libros?
como sabe la macro que hojas debe jalar de los libros, y en donde las tiene que pegar?
me preguntas al inicio de tu respuesta ultima que si la macro me funciona, a que macro te refieres? la que me acabas de enviar?
muchas gracias por todo, pronto quedará resuelto mi problema la verdad, no se como te lo agradeceré
Vamos paso a paso:
- La macro "CargarHojas" la tienes que poner, en un módulo en el libro que va a consolidar.
- En el macro del evento Open, va en el mismo libro que va a consolidar, pero en los eventos de ThisWorkbook.
- El archivo con las macros lo tienes que poner en la misma carpeta donde están tus 6 archivos.
- En dicha carpeta solamente debe haber 7 archivos, el archivo que consolida y los otros 6 archivos.
- De esa forma la macro, va a leer todos los archivos que están en la misma carpeta. La macro lee los 7, pero la macro sabe cuál es el libro que tiene la macro, entonces ese libro no lo procesa, solamente procesa los otros 6 libros.
- ¿Cómo sabe la macro cuáles son las hojas que va copiar? Es muy simple, la macro va a copiar todas las hojas del libro1 y las va a pegar en el libro que consolida; luego copia todas las hojas del libro2 y las pega en el libro que consolida; y así lo hace con los 6 libros.
- Por eso te preguntaba, "las hojas tienen que ser iguales" Tu respuesta: "que queden completamente iguales", entonces da lo mismo copiar las celdas o copiar toda la hoja.
- Lo que hace la macro es borrar todas las hojas del libro que consolida y luego pegar todas las hojas de los 6 libros. De esa forma si en tus 6 libros tienes 500 hojas, la macro te va a poner en libro que consolida 500 hojas y no tienen que existir previamente las 500 hojas en el libro que consolida.
- Lo que te interesa es tener todas las hojas de los 6 libros en el libro que consolida.
- Si la macro lo hace de una forma u otra, lo que importa es el objetivo.
- Te anexo nuevamente la macro para que la pongas en un módulo en el libro que consolida.
Sub CargarHojas() 'Por.Dante Amor Application.ScreenUpdating = False Application.DisplayAlerts = False Set l1 = ThisWorkbook ruta = l1.Path & "\" For h = l1.Sheets.Count To 2 Step -1 l1.Sheets(h).Delete Next ' arch = Dir(ruta & "*.xlsx") Do While arch <> "" Set l2 = Workbooks.Open(ruta & arch) For Each h In l2.Sheets Select Case UCase(h.Name) Case "PROYECTOS", "HOJA1" Case Else h.Copy after:=l1.Sheets(l1.Sheets.Count) End Select Next l2.Close arch = Dir Loop Application.ScreenUpdating = True MsgBox "hojas copiadas" End Sub
Sigue todos los pasos que te puse, no debes perderte, si todavía tienes problemas, entonces envíame tu archivo que consolida y te pongo las macros.
Sal u dos
Muchas gracias, de esta manera creo tendré éxito, una útlima cosa, de los libros, las hojas deben quedar exactamente iguales como lo comentaba, pero no todas las hojas, solo algunas hojas se deben copiar pero no todas.
Recuerdas cuando te hablaba de los proyectos 1 al 21 de los 6 archivos, que estos se encontraban en los archivos, jose, romina, pablo, pedro, etc?
Entonces de los 6 libros, debo copiar exactamente las hojas pero solo algunas.
¿como le puedo hacer en este caso?
Y por último, las carpetas son carpetas de red, en la carpeta "principal" están 7 carpetas ("concentradora" "pedro" pablo" "jose" "romina" "sergio" "juan")
Y en cada carpeta está el archivo con el mismo nombre, la razón de por que está así es por que cada nombre del archivo corresponde a una persona diferente quien llena ese archivo, y los demás no pueden tener acceso a el, entonces las carpetas están restringidas para que cada quien solo pueda ver la suya, a excepción de quien ve la carpeta concentradora, ella tiene acceso a todas las carpetas y a la carpeta principal.
¿como le podemos hacer en este caso?
Vamos por partes.
Suponiendo que en tu archivo1 tienes 20 hojas.
De esas 20 hojas solamente quieres que se copien 18, las hojas que no quieres copiar se llaman "PROYECTOS" y "HOJA1", entonces agrega esos nombres de hojas a esta línea de la macro:
Case "PROYECTOS", "HOJA1"
Suponiendo que en el archivo2 tienes 15 hojas, y una hoja no la quieres copiar, esa hoja se llama "RESUME", entonces agregas el nombre a la línea:
Case "PROYECTOS", "HOJA1", "RESUMEN"
Entonces en la línea pones todos los nombres de las hojas que no se van a copiar.
Para lo de las carpetas y para cualquier otro detalle que no me hayas comentado desde un principio, lo podemos ir solucionando, como no lo habías comentado, pues es difícil que yo lo considere en la macro.
Valora esta respuesta y crea una nueva. En la nueva pregunta me explicas con lujo de detalle cómo están las carpetas. Tienes que ser específico con los nombres de carpetas, de archivos, de hojas, etc., ya que tus ejemplos no son reales y por lo tanto tengo que estar haciendo ajustes y ajustes a las macros.
Sal u dos.
- Compartir respuesta