Macro en Excel para importar y unir múltiples archivos - TUTORIAL COMPLETO

แชร์
ฝัง
  • เผยแพร่เมื่อ 6 ก.ย. 2024
  • ¡Hola! Bienvenidos a un nuevo video de inteligencia eficiente, en esta ocasión aprenderás a hacer desde 0 una macro que permita unir diferentes archivos de Excel en uno solo, copiando y pegando
    los datos automáticamente.
    ¡Suscríbete para seguir más tutoriales y cursos gratuitos que estaré compartiendo!
    ¿Necesitas algo más personalizado? ¡Puedo desarrollar tu proyecto a la medida!
    Mail: inteligenciaeficienteYT@gmail.com
    Facebook:
    / inteligenciaeficiente
    Descarga el archivo:
    www.mediafire....

ความคิดเห็น • 130

  • @alr3001
    @alr3001 6 วันที่ผ่านมา

    Muchas gracias! Me ayudo muchisimo. Para mayor cantidad de datos, declarar la variable ultimaFila como "long".

    • @InteligenciaEficiente
      @InteligenciaEficiente  5 วันที่ผ่านมา

      ¡Gracias por comentar! Es correcto, con long evitamos el error overflow :D

  • @losmonteblanco
    @losmonteblanco 10 หลายเดือนก่อน

    ¡Buena la lección, definitivamente si es mejor como lo mencionas en otro tutorial, es mucho más práctico hacerlo con Power Query, gracias!

  • @Sbastianb30
    @Sbastianb30 7 หลายเดือนก่อน

    Gracias me ayudaste con un reto que me pusieron en el trabajo y salieron mas ideas, gracias muchas gracias de verdad

    • @InteligenciaEficiente
      @InteligenciaEficiente  7 หลายเดือนก่อน

      ¡Me alegra mucho leer tu comentario Sebastián! Un saludo :D

  • @dijhonsdeveloper4785
    @dijhonsdeveloper4785 2 ปีที่แล้ว

    Muchas gracias, en la empresa me pidieron realizar esto y la verdad, no lo tenia claro...

  • @camilitagamer374
    @camilitagamer374 8 หลายเดือนก่อน

    Gran tutorial excelente video, todos los éxitos

  • @profesuaste
    @profesuaste ปีที่แล้ว

    Me sirvió, excelente, muchas gracias.

  • @josemontes8621
    @josemontes8621 หลายเดือนก่อน

    excelente video, muy buena herramienta muchas gracias!! Pero tengo una pregunta cuando se ejercita y trate todos los archivos por que parece que los incluye solo a la mitad algunos y otros completos

    • @InteligenciaEficiente
      @InteligenciaEficiente  หลายเดือนก่อน

      ¡Hola! esto puede deberse a que existen valores en blanco que impiden que la macro conozca el tamaño real del dataset. Para eso sería necesario usar otro método para el cálculo de última fila y columna. En este video muestro otros métodos para hacer este cálculo que podrían ayudarte. ¡Saludos! th-cam.com/video/txW9ZR5OoLc/w-d-xo.htmlsi=yLxbi1Lg-jPj0K6-

  • @claulino30
    @claulino30 หลายเดือนก่อน

    Hola muchísimas gracias por la asesoría! Tengo un tema adicional, solo quiero copiar las celdas visibles. Como puedo hacerlo?

    • @InteligenciaEficiente
      @InteligenciaEficiente  หลายเดือนก่อน

      ¡Hola! Para las celdas visibles podemos usar la propiedad SpecialCells(xlCellTypeVisible) Acá te dejo un video donde usamos esa propiedad. th-cam.com/video/snBwgvNKoOI/w-d-xo.htmlsi=j60I9_yMOr0HS1ih ¡Saludos!

  • @CarlosAlfredoTrejoGonzal-op9ni
    @CarlosAlfredoTrejoGonzal-op9ni 8 หลายเดือนก่อน

    Hola está muy bien tu explicación pero si yo quisiera hacer de ese archivo de Excel jalar todas las hojas que tengo en un mismo archivo se puede ya que solo aquí te jala la primera hoja pero si tuviera más hojas de Excel en ese archivo como le puedo hacer?

  • @grijalvaescobedo158
    @grijalvaescobedo158 ปีที่แล้ว

    Me pareció excelente lo voy a descargar nuevo suscriptor 2 pregunta cuando quieres ingresar otro archivo tiene que estar en la carpeta otra pregunta que nombre tienen que tener los archivos o basta que que estén en una carpeta son detalles que no me quedaron claros lo que si se es que tienen que tener las mismas columnas como los encabezados es así o que otro inconveniente o que limitantes tienen esta macro comentaste que lo dejáramos en los comentarios y estas son mis dudas te agradecería si nos apoyaras a la comunidad por otra parte muchas bendiciones a tu canal abrazos desde León Guanajuato 🇲🇽👌👏🤝

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      ¡Hola! En cuanto a los nombres no hay limitantes. Como bien lo mencionas, basta con que estén en la misma carpeta y en cuanto a lo de las columnas esa sí es una limitante de esa macro, debe de tener los mismos encabezados. ¡Saludos! :D

    • @cantospropuestos2024
      @cantospropuestos2024 ปีที่แล้ว

      Si los archivos para unir tienen las mismas columnas y titulos, entonces sugiero consolidar la información de la siguiente forma:
      1.- Los archivos a unir deben de estar en una misma carpeta.
      2.- Solamente deben de estar esos archivos, ni uno otro y ningún otro tipo de archivos, ni siquiera alguno comprimido.
      3.- Las hojas donde esté la información a unir deben de tener el mismo nombre (diferentes archivos, mismos nombres de las hojas)
      4.- Desde un archivo nuevo de Excel seleccionar::: DATOS; OBTENER DATOS; DE UN ARCHIVO; DE UNA CARPETA; seleccionar la carpeta donde están los archivos a unir; al abrirla aparece la frase: "Ningún elemento coincide con el criterio de búsqueda", damos clic en "Abrir"; COMBINAR Y TRANSFORMAR DATOS; seleccionar la hoja donde están los datos a unir; ACEPTAR.
      Listo, queda unida la información de las diferentes hojas.
      Desde luego, esta es una forma muy general de unir la información.
      Yo la uso para unir la información de los pagos del SUA de una empresa con más de 200 registros patronales, entonces son más de 200 pagos por cada uno de los 12 meses del año.
      Por cualquier duda o información adicional, quedo atento 👍🏽

  • @marisolmendez7912
    @marisolmendez7912 2 ปีที่แล้ว +1

    Hola buenas noches, Genial este vídeo y admiro tu conocimiento.
    Pero quisiera tu ayuda, puedes agregarle algo al código para que al unir los archivos deje registros únicos ya que los duplicados sobran y aun mejor seria que al ejecutar la macro y unir los archivos agregara únicamente lo nuevo y no volviera a pisar lo ya unificado.
    Mil Gracias.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Marisol, lo que se me ocurre es que al final de pegar los registros, se ejecute un comando que elimine los duplicados, algo así Sheets("TuHojaAqui").Range("A1").CurrentRegion.RemoveDuplicates ¡Saludos!

  • @marylandcarvajal9909
    @marylandcarvajal9909 6 หลายเดือนก่อน

    Bastante buena 👍 ❤

  • @marin90510
    @marin90510 5 หลายเดือนก่อน

    Buenos días. Excelente aporte. Pero, cuando los archivos de Excel tiene varias hojas, la macro sólo está copoiando los datos de la primera, el resto de las hojas no se copia. Puedes por favor explicarme como se le agrega esa instrucción a la macro. Gracias

    • @InteligenciaEficiente
      @InteligenciaEficiente  5 หลายเดือนก่อน

      ¡Hola! Claro que sí, en lugar de set hojaCopiada = libroCopiado.Sheets(1) tendríamos que agregar un bucle que recorra todas las hojas del libroCopiado, se vería algo así:
      For hoja in libroCopiado.Sheets
      Set hojaCopiada = hoja
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      Next
      Cualquier duda puede contactarme por correo para poder apoyarlo de mejor manera.

  • @alpema80
    @alpema80 ปีที่แล้ว

    Muchas gracias por tan excelente video. Una pregunta, còmo puedo colocar el fondo del vba con las caractersiticas que usted lo tiene? es decir, fondo negro y con le tras en colores? Gracias

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว +1

      ¡Hola Alex! te dejo este video, espero que te sirva: th-cam.com/video/vLjRBBAX72A/w-d-xo.html&ab_channel=SergioAlejandroCampos-EXCELeINFO

  • @TheFrancoelmalo
    @TheFrancoelmalo ปีที่แล้ว

    Hola Amigo, muchas gracias por compartirnos tus conocimientos. Yo intente seguir tu explicación y funcionó pero tengo un problema, yo quiero unir 4 Libros que tienen la misma Tabla en otra hoja con el código que explicaste, la cuestión es que las primeras dos hojas las copia correctamente pero a partir de la tercera no copia el contenido de las columnas 4 en adelante. Se te ocurre que podría estar pasando?.

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      ¡Hola! Muchas gracias por tu comentario, quizá pueda ayudarte con las modificaciones que necesitas, escríbeme al correo que está en la descripción para tener un contacto más directo. ¡SALUDOS!

  • @JairBullaVargas
    @JairBullaVargas 2 ปีที่แล้ว

    Excelente.

  • @criscrash5638
    @criscrash5638 ปีที่แล้ว

    Muchas por tus conocimientos Amigo.
    Un favorzote, que instrucciones se le puede dar a la macro para que abra los archivos en orden y no los revuelva al momento de copiarlos en la hoja destino.
    saludos....

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      Hola! Se tendría que cambiar un poco el método para puedas seleccionar los archivos directamente y el orden en el que los hayas seleccionado será el orden en el que los va a insertar, si necesitas ayuda puede contactarme a inteligenciaeficienteYT@gmail.com

  • @joeladamescabral219
    @joeladamescabral219 ปีที่แล้ว

    Hola, muchas gracias por este video y por tomar tu tiempo y compartir tus conocimientos.
    Tengo que unir datos de 50 archivos pero las hojas están protegidas sin contraseña, como puedo desprogerlas y que cuando pegue en el destino pegue en valores no las fórmulas de los archivos

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      ¡Hola Joel!Para desproteger una hoja existe el método worksheet.unprotect("tucontraseña") donde worksheet en este caso sería hojaCopiada.unprotect("tuContraseñaAqui") más info: learn.microsoft.com/es-mx/office/vba/api/excel.worksheet.unprotect para pegar solo los valores: exceltotal.com/como-copiar-y-pegar-celdas-con-vba/

  • @yunesreyesmarcoantonio3371
    @yunesreyesmarcoantonio3371 2 ปีที่แล้ว

    Qué buen video, gracias!!, Disculpa y si en lugar de una carpeta quiero seleccionar el archivo desde distintas rutas, ¿Cómo seria?.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Yunes! Si deseas una asesoría más personal puedes escribirme a: inteligenciaeficienteyt@gmail.com SALUDOS!!

  • @jorgeatienza2918
    @jorgeatienza2918 2 ปีที่แล้ว

    Hola, gracias por el video, muy útil!
    Mi duda es, si tengo los CSV con punto y coma como separadores en lugar de comas sabrías decirme como puedo actualziarlo para que la separación sea correcta?
    gracias!

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Jorge, hay una función que se llama Texto a columnas, podrías seguir todo este video y ya que tengas la información consolidada realizar la conversión de texto a columnas, te dejo aquí un link support.microsoft.com/es-es/office/dividir-texto-en-diferentes-columnas-con-el-asistente-para-convertir-texto-en-columnas-30b14928-5550-41f5-97ca-7a3e9c363ed7 también podrías seguir las instrucciones de este video th-cam.com/video/91zkI1bvk9s/w-d-xo.html revísalo y elige la opción que más te convenga, saludos!!

  • @sebastiangonzalez3062
    @sebastiangonzalez3062 2 ปีที่แล้ว

    Hola que tal ?!. Bastante interesante el contenido del video y muy bien hecho. Muy útil para el manejo de gran cantidad de datos. Intente realizar el paso a paso pero me salió error 1004 en tiempo de ejecución: Error en el método 'Range' de objeto '_Worksheet' al momento de ejecutarlo. Hay cosas que no son claras para mi como generar la carpeta 'Archivo' en el mismo archivo de xlm. Cree una carpeta en mi escritorio (Macros) con la carpeta 'Archivos' y el excel con el código dentro de esa carpeta inicial (Macros). Si puedes colaborarme, lo agradecería. Saludos. Que buen material

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Sebastian! Con gusto puedes enviarme un correo a inteligenciaeficienteyt@gmail.com para poder revisar el error que te aparece SALUDOS!!

  • @reynaldonavarro4499
    @reynaldonavarro4499 2 ปีที่แล้ว

    Buenas excelente video! Cómo se puede hacer para copiar solo un grupo de columnas específicas, sin necesidad de copiar toda la hoja con el encabezado

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola, en ese caso puedes modificar la línea que da valor al rango copiado, por ejemplo si quisieras copiar de la celda A1 a la celda Z100 la línea de código será la siguiente de Set RangoCopiado = hojaOrigen.Range("A1:Z100").Copy

  • @nathashaprieto3159
    @nathashaprieto3159 2 ปีที่แล้ว

    Hola, excelente video, gracias.
    Aprovecho de hacerte una consulta, si quiero copiar sólo ciertas columnas (por ejemplo la D, E y G de todos los archivos) me podrás ayudar con cómo modifico el código?

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Natasha, se me ocurre que podrías ocultarlas primero y después copiar y pegar solo las celdas visibles, si gustas puedes mandarme tu macro a inteligenciaeficienteyt@gmail.com para poder revisar tu caso, saludos!!

  • @raulhernandez60
    @raulhernandez60 2 ปีที่แล้ว

    Excelente video, me gustaría me pudieras apoyar, si necesito que en lugar de que sea en filas hacia abajo, necesitara la información pero en columnas a la derecha, ejemplo en lugar de que se vaya hacia la fila A1, A2, A3 etc, copie la información a columna A1 datos y el siguiente libro de excel lo copie en columna E1 y así sucesivamente. Gracias de antemano.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Hola Raúl, te comparto este video donde muestro algunos ejemplos de copiado y pegado en celdas que no están en la misma ubicación, saludos!! th-cam.com/video/TFWj_VpdGD8/w-d-xo.html&ab_channel=InteligenciaEficiente

  • @dijhonsdeveloper4785
    @dijhonsdeveloper4785 2 ปีที่แล้ว +1

    Buen día, gracias por tus comentarios, ya la macro esta funcionando con los cambios indicados en el servidor del cliente, sabes como puedo hacer para que después de unificar los archivos elimine, lo que esta dentro de la carpeta 'Archivos', en una semana tengo mas de 500, y tengo que ingresar y eliminar manualmente. Gracias por tanta colaboración.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Para eliminar los archivos bastará con agregar la línea: fsoFile.Delete dentro del cilo For Each de tal manera que se vea así
      👇
      For Each fsoFile In fsoFolder.Files
      Workbooks.Open (fsoFile.Path)
      Set libroCopiado = Workbooks(fsoFile.Name)
      Set hojaCopiada = libroCopiado.Sheets(1)
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      encabezados = False
      libroCopiado.Close SaveChanges:=False
      fsoFile.Delete
      Next

    • @dijhonsdeveloper4785
      @dijhonsdeveloper4785 2 ปีที่แล้ว

      @@InteligenciaEficiente Gracias infinitas, por tanta colaboración

    • @dijhonsdeveloper4785
      @dijhonsdeveloper4785 2 ปีที่แล้ว

      @@InteligenciaEficiente muchas gracias, funciono.

  • @silveriorafaelesquivel2438
    @silveriorafaelesquivel2438 6 หลายเดือนก่อน

    Buena tarde. Disculpa y que pasa si en el "archivoOrigen" hay filas en blanco pero mas abajo hay mas datos?, como podrias llevarte eso?

    • @InteligenciaEficiente
      @InteligenciaEficiente  6 หลายเดือนก่อน

      ¡Hola! Cuando tenemos un caso como este, se recomienda usar otro método para el cálculo de la última fila, te comparto este video donde muestro otras maneras de calcular la última fila y justamente presento ese caso donde hay filas en blanco. Saludos: th-cam.com/video/txW9ZR5OoLc/w-d-xo.htmlsi=8mgWdWtejhTu3X8j

  • @jesustime9111
    @jesustime9111 2 ปีที่แล้ว

    Excelente video y explicación, podrías ayudarme con algo porfavor, al momento de copiar el 1er archivo copia todas las columnas, pero el 2do archivo y el tercero solo copia hasta cierta columna, entiendo que es porque la base de datos tiene columnas vacias, como podría hacer para que copie de un rango específico todas las columnas de los 3 archivos que tengo como base

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Jesus, puede existir diversas maneras para resolver el problema que mencionas, si aún necesitas una asesoría más personalizada con gusto puedes escribirme a: inteligenciaeficienteyt@gmail.com

  • @angelicaolivares2250
    @angelicaolivares2250 ปีที่แล้ว

    Me encantó el vídeo, me sirvió mucho, pero al correr la macro me arroja error de objeto todo lo demás funciona, sólo que mi excel en versión 2016 y no se si exista forma de cambiar la función de countA o tenga que descargar algún complemento para está macro, ojalá me pudieran ayudar.

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      ¡Hola! Si aún continúas con problemas puedes enviarme tu macro por correo: inteligenciaeficienteYT@gmail.com ¡Saludos!

  • @DulsSsT
    @DulsSsT 3 ปีที่แล้ว

    Chulada, hay forma de identificar los datos de cada archivo, con otra columna, supongamos con el nombre de cada archivo de excel, que se le agregara?

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 ปีที่แล้ว

      ¡Hola Dulce! Sí cambia algo el código, pero espera un video sobre cómo hacerlo sin programación :D, utilizado Power Query de Excel.

  • @etudelas
    @etudelas 3 ปีที่แล้ว

    Genial muchas gracias

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 ปีที่แล้ว +1

      ¡Gracias a ti! :D

    • @etudelas
      @etudelas 3 ปีที่แล้ว

      @@InteligenciaEficiente amigo como te puedo ubicar para que me ayudes con un pequeño trabajo freelance. Estoy trabado y necesito orientacion. Ayuds remunerada logicamente. Quedo atento. Gracias de antemano

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 ปีที่แล้ว +1

      @@etudelas Claro que sí con gusto, puedes enviarme mensaje a la página de fb: facebook.com/InteligenciaEficiente

    • @etudelas
      @etudelas 3 ปีที่แล้ว

      @@InteligenciaEficiente muchas gracias. Lo haré

  • @betsabesanchez8132
    @betsabesanchez8132 2 ปีที่แล้ว

    Hola, justo estaba buscando algo parecido y tu video me cayó como caído del cielo.
    ¿Cambiaría mucho si en lugar de Excel utilizo Access? Espero me respondas, muchas gracias.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Betsabé, muchas gracias por tu comentario! Para replicar este proceso en Access, sí cambia debido a que Access es una base de datos SQL, si gustas contactarme para una sesión de asesoría al correo inteligenciaeficienteYT@gmail.com con gusto podemos revisar este tema!

  • @videoclass-pacha
    @videoclass-pacha ปีที่แล้ว

    Muy buen video. Quisiera que me escribas un código para el cual la información que se una vayan a hojas continuas, es decir el libro 1 iría a la hoja 1 y los otros libros después de la hoja 1 a la hoja 2, hasta terminar con todos los libros a un mismo libro.

    • @marin90510
      @marin90510 5 หลายเดือนก่อน

      Tengo la misma petición

  • @galgogreco
    @galgogreco 2 ปีที่แล้ว

    Hola, buen día
    ¡Muchísimas gracias por tu video! Me está ayudando bastante. Fíjate que en la línea 34 (de ultimaFila + 1) me sale un error de overflow por la gran catidad de datos que tengo en mis archivos ¿sabes cómo puedo corregir esto?

    • @galgogreco
      @galgogreco 2 ปีที่แล้ว

      De igual manera, no sé por qué pero cuando corro la macro, se me abre uno de los libros que tengo en la carpeta de archivos

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola! Para corregir lo de overflow cambia el tipo de dato ultimaFila de Integer a Long o sea, en la línea Dim ultimaFila As Long

  • @salvadorcontreras3334
    @salvadorcontreras3334 2 ปีที่แล้ว

    Buenas tardes, excelente video. Todo iba bien, hasta que tuve un problema cuando tuve 6 archivos en la carpeta y a partir de qué excel leía el 6 archivo se traba y muestra que hay un error al copiar el rango. Que se podria hacer en ese caso?

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Salvador, si necesitas ayuda más personalizada con gusto puedes mandarme un correo a: inteligenciaeficienteyt@gmail.com

  • @maribeluribe773
    @maribeluribe773 ปีที่แล้ว

    Hola, muy buen video
    Estuve ejecutando la macro y me pasan varias cosas
    1. Cuando lo corro tal cual se me pega la información incluyendo encabezados (iniciando en A1)
    2. Cuando realizo las modificaciones adecuando a mi archivo que la información inicia en A10 (y se pegue en B10) y su encabezados esta en fila 9, solo me copia un archivo de los 4 que necesito.
    3. También me gustaría saber como pegar la información como valor ya que tengo unformacion con listas desplegables y no me gustaria que se pasaran.
    Saludos.

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      Muchas gracias por contactarme por correo Maribel, cualquier cosa aquí seguimos! :D

    • @anahygare2302
      @anahygare2302 ปีที่แล้ว

      Hola Maribel , puedes compartir la solución ? Tengo el mismo problema:(

  • @josecarloslozano8419
    @josecarloslozano8419 2 ปีที่แล้ว

    Hola, estan excelentes tus videos, una pregunta si deseo unir 5 hojas en lugar de solo 1 de ellas como deberia configurar la macro.

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      ¡Muchas gracias por tu comentario José! Con solo unas cuantas adaptaciones se puede hacer para la cantidad de hojas que desees, además de darte la solución te explicaré las modificaciones que debes hacer para así ayudar a todas las personas interesadas en un futuro. Ahí va la explicación, Originalmente tenemos esta sección en el código (es la que se verá afectada para lograr incorporar más hojas).
      encabezados = True
      Set estaHoja = ThisWorkbook.Sheets(1)
      estaHoja.Cells.Clear
      For Each fsoFile In fsoFolder.Files
      Workbooks.Open (fsoFile.Path)
      Set libroCopiado = Workbooks(fsoFile.Name)
      Set hojaCopiada = libroCopiado.Sheets(1)
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      encabezados = False
      libroCopiado.Close SaveChanges:=False
      Next

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Pues bien, lo primero que haremos será cambiar el orden de Set estaHoja = ThisWorkbook.Sheets(1) con el fin de que quede dentro del ciclo ya que estaremos cambiando su valor cada vez que queremos copiar una nueva hoja por lo que quedará así en primer lugar.
      encabezados = True
      estaHoja.Cells.Clear
      For Each fsoFile In fsoFolder.Files
      Workbooks.Open (fsoFile.Path)
      Set libroCopiado = Workbooks(fsoFile.Name)
      Set estaHoja = ThisWorkbook.Sheets("Hoja1") ' < ---- Cambiamos el orden de esta línea
      Set hojaCopiada = libroCopiado.Sheets(1)
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      encabezados = False
      libroCopiado.Close SaveChanges:=False
      Next

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Lo que haremos ahora será repetir la sección x el número de veces que desees copiar hojas así que si deseamos copiar 3 hojas debemos copiar estas líneas 3 veces y cambiar el nombre que aparece entre comillas, por ejemplo quiero unir las hojas con nombre "Hoja1", "Hoja2" y "Hoja3" estos nombres deben corresponder con los que aparecen en Excel, en la pestaña de cada hoja.
      encabezados = True
      estaHoja.Cells.Clear
      For Each fsoFile In fsoFolder.Files
      Workbooks.Open (fsoFile.Path)
      Set libroCopiado = Workbooks(fsoFile.Name)
      Set estaHoja = ThisWorkbook.Sheets("Hoja1")

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Por último, la línea debe estar dentro de la subrutina copiarDatos ya que de lo contrario no se hará la limpieza de las hojas 2, 3, 4, 5, etc... esta limpieza solo debe hacerse la primera vez que se copian los datos en cada hoja por lo que la variable nos ayudará ya que es verdadera la primera vez que se copian los datos y se vuelve falsa cuando termina de copiar los datos del primer libro, entonces modificaremos copiarDatos:
      Sub copiarDatos(hojaOrigen As Worksheet, hojaDestino As Worksheet, encabezados As Boolean)
      Dim rangoCopiado As Range
      Dim ultimaFila As Integer
      If encabezados = True Then hojaDestino.Cells.Clear '

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Finalmente, el código quedará de la siguiente manera, espero haberte ayudado, cualquier duda quedo atento!
      Nota: Pudimos haber creado un ciclo FOR interno y así evitar copiar las 3 líneas de código por cada hoja que se desea copiar sin embargo no lo recomiendo pues no es tan claro de entender para todos aunque si deseas puedes hacer esa modificación. :D
      Sub principal()
      Application.ScreenUpdating = False
      Application.DisplayAlerts = False
      Dim libroCopiado As Workbook
      Dim estaHoja As Worksheet, hojaCopiada As Worksheet
      Dim FSO As Object, fsoFile As Object, fsoFolder As Object
      Dim encabezados As Boolean
      Dim directorio As String

      Set FSO = CreateObject("Scripting.FileSystemObject")
      directorio = FSO.buildPath(ThisWorkbook.Path, "Archivos")
      Set fsoFolder = FSO.GetFolder(directorio)
      encabezados = True
      For Each fsoFile In fsoFolder.Files
      Workbooks.Open (fsoFile.Path)
      Set libroCopiado = Workbooks(fsoFile.Name)
      Set estaHoja = ThisWorkbook.Sheets("Hoja1")
      Set hojaCopiada = libroCopiado.Sheets("Hoja1")
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      Set estaHoja = ThisWorkbook.Sheets("Hoja2")
      Set hojaCopiada = libroCopiado.Sheets("Hoja2")
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      Set estaHoja = ThisWorkbook.Sheets("Hoja3")
      Set hojaCopiada = libroCopiado.Sheets("Hoja3")
      Call copiarDatos(hojaCopiada, estaHoja, encabezados)
      encabezados = False
      libroCopiado.Close SaveChanges:=False
      Next
      End Sub
      Sub copiarDatos(hojaOrigen As Worksheet, hojaDestino As Worksheet, encabezados As Boolean)
      Dim rangoCopiado As Range
      Dim ultimaFila As Integer
      If encabezados = True Then hojaDestino.Cells.Clear
      ultimaFila = Application.WorksheetFunction.CountA(hojaDestino.Columns(1)) + 1
      If Not encabezados Then hojaOrigen.Rows(1).EntireRow.Delete
      Set rangoCopiado = hojaOrigen.Range("A1").CurrentRegion
      rangoCopiado.Copy Destination:=hojaDestino.Range("A" & ultimaFila)
      End Sub

  • @slacex
    @slacex 4 หลายเดือนก่อน

    que hacer si la ruta de archivos a combinar esta en otra parte?

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 หลายเดือนก่อน

      ¡Hola! La podrías referenciar desde una celda de Excel y obtener su valor en el código de la macro usando la clase Range

  • @joanuspaulus
    @joanuspaulus 7 หลายเดือนก่อน

    Buen día. Yo estoy teniendo un problema y genera el error "Se ha producido el error '6' en tiempo de ejecución. Desbordamiento". Cómo puedo depurar lo y/o a que se debe para poder revisar el código? Muchas gracias.

    • @InteligenciaEficiente
      @InteligenciaEficiente  7 หลายเดือนก่อน +1

      Hola Joan, te recomiendo ver este video donde doy tips de depuración: th-cam.com/video/WY3_-MEZV8M/w-d-xo.htmlsi=vLbSPA4cQGcnS43A el error de desbordamiento aparece cuando una variable numérica alcanza su límite, es posible que estés usando una variable de tipo INTEGER que va aumentando su valor, si se supera ±32,767 entonces dará un error de desbordamiento, en ese caso te recomiendo cambiar el tipo de INTEGER a LONG. ¡Saludos!

    • @joanuspaulus
      @joanuspaulus 7 หลายเดือนก่อน

      @@InteligenciaEficiente Muchas gracias. En efecto ese era el inconveniente.

  • @dijhonsdeveloper4785
    @dijhonsdeveloper4785 2 ปีที่แล้ว

    Buena tarde, tengo una pregunta, para ver si me puedes colaborar por favor:
    Ya presente la macro, y hasta el momento bien gracias por la ayuda, pero ahora resulta que uno de los clientes maneja espacios en blanco y archivo debería respetar , y pintar según corresponda con la columna.
    Que me puedes recomendar, gracias.

    • @dijhonsdeveloper4785
      @dijhonsdeveloper4785 2 ปีที่แล้ว

      .

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola para poder ayudarte te mejor te sugiero que me contactes a la pagina de facebook de la descripción, saludos!!

  • @DanielSanchez-fr8mw
    @DanielSanchez-fr8mw 11 หลายเดือนก่อน

    Hola, excelenete video pero al momento de ejecutar me sale el error 76 indica que no se ha encontrado la ruta de acceso, le doy en depuerar y marca el siguiente codigo Set fsoFolder = FSO.GetFolder(directorio)
    Alguien sabe como se corrige o a alguien mas le salio?? Ayuda por favor

  • @max.s.7038
    @max.s.7038 2 ปีที่แล้ว +1

    hola , me da error en Set fsoFolder = fso.GetFolder(directorio) como puedo corregir? los archivos lo tengo en Documentos

    • @DanielSanchez-fr8mw
      @DanielSanchez-fr8mw 11 หลายเดือนก่อน

      Me salió el mismo error, como lo corregiste, me puedes ayudar por favor

  • @LucilaGonzalez-oz2lo
    @LucilaGonzalez-oz2lo ปีที่แล้ว

    consulta : la macro funciona bien pero del primer archivo me trae todas las columnas, mientras que en los restantes archivos no me trae el resto de columnas, como puedo corregir eso? Saludos y gracias por las explicaciones

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      Hola Lucila, para poder ayudarte por favor envíame tu macro al correo que dejo en la descripción, saludos! :D

  • @dijhonsdeveloper4785
    @dijhonsdeveloper4785 2 ปีที่แล้ว

    Buen día, ¿Puedo eli8minar los encabezados?. Gracias

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Claro que es posible, podrías usar el comando Rows(1).EntireRow.Delete

  • @omarrosales358
    @omarrosales358 2 ปีที่แล้ว

    hola excelente video, me da el error 438 Object doesn't support this property or method, sabes como poder solucionarlo?

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Omar, puede deberse a que tienes algún error al declarar una variable o el valor de la misma. Puedes enviarme tu código a inteligenciaEficienteYT@gmail.com para que pueda ayudarte a corregirlo. ¡Saludos! :D

  • @jeanhernandez9038
    @jeanhernandez9038 ปีที่แล้ว

    Y si los archivos que deseo unir, estuvieran en diferentes subcarpetas y todas estas dentro de una carpeta madre. Esto es, porque dentro de cada carpeta tendria un archivo en el cual un usuario unico podra gestionar, pero este usuario no podra ver los demas archivos

  • @beatrizmosqueraibarguen2059
    @beatrizmosqueraibarguen2059 3 ปีที่แล้ว

    Hola Y si yo agrego nuevos archivos Se actualizan todos o solo los que agregue en la carpeta??

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 ปีที่แล้ว +1

      ¡Hola! Si deseas conservar los datos que tenías antes de correr la macro, necesitas borrar la línea que escribo en el minuto 18:00, esa línea de código hace una limpieza de datos antes de pegar los nuevos.

  • @angelchang8116
    @angelchang8116 2 ปีที่แล้ว

    Cómo puedo hacer que esto funcione para archivos de texto?, que copie y una la información de varios archivos de texto pero sin que los tabule, es decir, que cada línea del archivo de texto esté en una celda

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Ángel, con gusto puedo apoyarte en esa petición particular. Si deseas una asesoría más personal puedes escribirme a: inteligenciaeficienteyt@gmail.com SALUDOS!!

  • @matiasignaciosepulvedapino68
    @matiasignaciosepulvedapino68 2 ปีที่แล้ว

    Hola, tengo una consulta, a la hora de combinar mis archivos estos no se separan por celdas y se agrupan por punto y coma; sabes a que se puede deber? se que se pueden cambiar de texto a columnas pero a la hora de hacerlo se reemplazan y pierdo datos

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Hola Matías, se puede deber a que tus archivos de origen están en formato .CSV te comparto un video donde proceso un archivo delimitado por punto y coma usando Power Query. th-cam.com/video/YPPeIftGs0s/w-d-xo.html

    • @matiasignaciosepulvedapino68
      @matiasignaciosepulvedapino68 2 ปีที่แล้ว

      Si, los tengo en ese formato, el problema es que tengo que automatizar ese proceso, tambien estaba pensando hacerlo con power query pero al hacerlo me consume tiempo del dia a dia, pero gracias igual, genial tu video

  • @chumbe123
    @chumbe123 2 ปีที่แล้ว

    Buenas , me da error en Set fsoFolder = fso.GetFolder(directorio) como puedo corregir? los archivos a copiar los tengo en una carpeta ,como tu ejemplo..gracias

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      Hola Marco, hay que verificar que esté bien escrita la línea Set FSO = CreateObject("Scripting.FileSystemObject") si está bien escrita entonces hay que verificar que tengas una carpeta llamada "Archivos" respetando las mayúsculas. ¡Saludos! Si continúas con problemas puedo ayudarte más directo si me escribes un correo a inteligenciaeficienteYT@gmail.com

    • @fp5420
      @fp5420 2 ปีที่แล้ว

      Hola me ocurre igual, y no se porque todo esta correcto ;(

    • @Sebasvb88
      @Sebasvb88 2 ปีที่แล้ว

      Hola. Buenas tardes, me da el mismo error, ya sabes cómo corregirlo? 🥺

  • @jessicazamora4974
    @jessicazamora4974 2 ปีที่แล้ว

    Esta súper bien el tutorial! Pero estoy teniendo problemas a la hora de ejecutarlo. Mis archivos inician en la fila 7 y están en la hoja 2. Igual están protegidos con contraseña, no sé si tendría que desprotegerlos antes de hacer el consolidado. Me marca el error 429, entonces no sé como hacerle
    Espero me puedas ayudar! Gracias!!

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +2

      Hola Jessica! si es la misma contraseña para todos los archivos entonces hay que modificar la línea Workbooks.Open(fsoFile.Path) por Workbooks.Open(filename:=fsoFile.Path, password:= "tuPasswordAqui")

    • @jessicazamora4974
      @jessicazamora4974 2 ปีที่แล้ว

      @@InteligenciaEficiente Muchísimas gracias! Y con el tema de que mis columnas no inician en la fila 1, sino en la 7? 🙃

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +2

      @@jessicazamora4974 Para indicarle que copie la segunda hoja hay que modificar Set hojaCopiada = libroCopiado.Sheets(1) por Set hojaCopiada = libroCopiado.Sheets(2) y para copiar desde la fila 7 Set rangoCopiado = hojaOrigen.Range("A1").CurrentRegion por Set rangoCopiado = hojaOrigen.Range("A7").CurrentRegion

    • @jessicazamora4974
      @jessicazamora4974 2 ปีที่แล้ว

      @@InteligenciaEficiente Perfecto, muchísimas gracias!!

    • @nicolaszaremberizzo3513
      @nicolaszaremberizzo3513 ปีที่แล้ว

      @@InteligenciaEficiente Hola, buenas tardes, ¿cómo estás? Tengo un problema semejante: cada libro y cada hoja están protegidos por contraseña (la contraseña es la misma, tanto para los libros como para las hojas). Cuando intento pegar la instrucción que dejaste aquí me aparece lo siguiente "Error de compilación: Se esperaba: =". Agradecería muchísimo tu ayuda, lo necesito para el trabajo y desde ya decirte que tu trabajo es excelente, ganaste un nuevo suscriptor.

  • @sergioandresrealforero2971
    @sergioandresrealforero2971 2 ปีที่แล้ว

    Hola, tengo una duda... Cuando quiero tomar un rango más amplio como lo hago? Es que mi libro de excel tiene espacios entre columnas por ende cuando corro la macro solo aparecen los encabezados, cómo puedo solucionarlo...?

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Hola, en ese caso tendrías que buscar la mejor manera de calcular tu última columna, hay varias maneras en la que esto se puede hacer. Te comparto más información: es.extendoffice.com/documents/excel/1721-excel-find-last-row-column-with-data.html

    • @sergioandresrealforero2971
      @sergioandresrealforero2971 2 ปีที่แล้ว

      @@InteligenciaEficiente Muchas gracias encontré la forma de reformar la macro para que la tomara de diferente manera, mil gracias por contestar 👍🏻

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      @@sergioandresrealforero2971 Excelente!!

  • @jorgeballesteros8125
    @jorgeballesteros8125 2 ปีที่แล้ว

    Sabes como seria el codigo en ingles? Creo que me esta generando confusion pasar del espanol al ingles en la programacion

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว +1

      Te comparto algunos ejemplos de palabras que puedes cambiar:
      libroCopiado -> copiedWorkbook
      hojaCopiada -> copiedSheet
      CopiarDatos -> copyData
      directorio -> directory
      encabezados -> headers
      ultimaFila -> lastRow
      estaHoja-> thisSheet
      rangoCopiado -> copiedRange
      Puedes hacer uso de google translate (translate.google.com) siempre que te cueste traducir una palabra, saludos!

  • @fabianparamo1536
    @fabianparamo1536 3 ปีที่แล้ว

    Me funcionó pero solo me unió tres archivos, ya que me marca error número 6 derramamiento, como lo puedo solucionar?

    • @InteligenciaEficiente
      @InteligenciaEficiente  3 ปีที่แล้ว +3

      Hola Fabian, te responderé no solo cómo solucionar el error sino a qué se debe para ofrecerte la mayor ayuda posible. El error que mencionas se debe a que el valor numérico que se desea almacenar en una variable es mayor al máximo valor aceptado por esa variable, tal debe de ser el caso de la variable UltimaFila (minuto 11:14) que se declaró como tipo Integer, este tipo de dato solo puede almacenar números entre -32,768 to 32,767, si se sale de este umbral marcará un error de desbordamiento como mencionas. Para solucionar esto solo tienes que cambiar la línea Dim UltimaFila As Integer por --> Dim UltimaFila As Long (El tipo de dato Long puede almacenar números entre -2,147,483,648 y 2,147,483,647. ¡Espero que te funcione! :D

    • @fabianparamo1536
      @fabianparamo1536 3 ปีที่แล้ว

      @@InteligenciaEficiente Si, muchas gracias ya lo corrobore y si funciono

  • @anahygare2302
    @anahygare2302 ปีที่แล้ว

    Todo bien con la macro pero resulta que después de que meto un archivo ya no puedo meter más ejemplo:
    Archivo 1: con 200 datos
    Archivo 2: con 300
    Archivo 3: con 96,000
    Después del archivo 3 ya no puedo meter más archivos , alguien sabe por qué?? :(

    • @InteligenciaEficiente
      @InteligenciaEficiente  ปีที่แล้ว

      Hola! Podrías enviarme tu macro al correo que encuentras en la descripción para poder ayudarte :D

  • @FranConcept
    @FranConcept 2 ปีที่แล้ว

    no me da tiempo copiarlo podrias prepararlo para descargar?

    • @InteligenciaEficiente
      @InteligenciaEficiente  2 ปีที่แล้ว

      La macro la puedes descargar en la descripción, de ahí puedes copiar el código, saludos!!

    • @FranConcept
      @FranConcept 2 ปีที่แล้ว

      @@InteligenciaEficiente muchas gracias

  • @lucasmedina1
    @lucasmedina1 3 ปีที่แล้ว

    Buen dia! quisiera incorporar archivos como en el ej anterior (th-cam.com/video/G_jLURKjzi4/w-d-xo.html) como podria modificar las lineas para ingreso manual?
    Muchisimas gracias!!!