Trucos Excel. Unir todos los excel en uno, versión muy mejorada

25 Sep

El amigo @jose nos envía una nueva versión de la macro Excel que nos permite unir varios excel en uno. En este enlace en formato RAR tenéis un ejemplo de funcionamiento donde el libro de Excel más importante es UNIR.XLSM Las instrucciones de uso son:

  1. Ponemos todos los Excel que deseemos unir en un directorio
  2. Ponemos UNIR.XLSM en ese directorio
  3. Abrimos UNIR.XLSM y simplemente pulsamos el botón
  4. Tenemos un nuevo libro llamado UNIDOS.XLS

Así de sencillo. El código que emplea la macro es visible, su autor no pone problemas. Muchas gracias @jose por esta macro tan sencilla y tan práctica, seguro que muchos de vosotros la encontraréis muy útil. Yo la encuentro genial. Saludos.

133 respuestas a «Trucos Excel. Unir todos los excel en uno, versión muy mejorada»

  1. Gracias por la macro. ¿Sería posible que trajese todos los registros a una sola pestaña en lugar de crear una pestaña diferente para la información de cada fichero?

    • Sub UNIRLIBROS()

      Dim bookList As Workbook
      Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
      Application.ScreenUpdating = False
      Set mergeObj = CreateObject(«Scripting.FileSystemObject»)
      ‘change folder path of excel files here
      Set dirObj = mergeObj.Getfolder(«D:\Cuadraturas\analisis\analisis_exportados\prueba_copiar»)
      Set filesObj = dirObj.Files
      For Each everyObj In filesObj
      Set bookList = Workbooks.Open(everyObj)
      ‘change «A2» with cell reference of start point for every files here
      ‘for example «B3:IV» to merge all files start from columns B and rows 3
      ‘If you’re files using more than IV column, change it to the latest column
      ‘Also change «A» column on «A65536» to the same column as start point
      Range(«A2:IV» & Range(«A65536»).End(xlUp).Row).Copy
      ThisWorkbook.Worksheets(1).Activate
      ‘Do not change the following column. It’s not the same column as above
      Range(«A65536»).End(xlUp).Offset(1, 0).PasteSpecial
      Application.CutCopyMode = False
      bookList.Close
      Next
      End Sub

      • Ole, ole y O-L-E

        Va perfecto con la única precaución de cambiar las comillas curvas por comillas rectas (también he suprimido los comentarios, por si acaso, pero tal vez no puedan mantenerse)

  2. Hola Jaime, si lo que quieres es unir todos los datos en una sola hoja para trabajarlos otra forma seria utilizando el informe de tablas dinamicas con multiples hojas deun solo libro. Espero te haya servido de ayuda.

  3. hola. No estará lo mismo pero para la versión 2000?, intenté abrirlo pero no pude copiar el codigo y ni lo veo porque usé oppen office.

    Para usar multiples hojas como le sugeris a Jaime, los encabezados de las hojas tienen que ser iguales? no?

    Bueno espero que no sea muy confusa mi pregunta.

    Gracias

  4. Por favor me podrían enviar la macro que hace que se unan varios libros en una sola hoja de Excel, estoy intentando con el enlace que publican pero no me sale nada, Un saludo, gracias anticipadas

    • Por favor me podrían enviar el código la macro que hace que se unan varios libros en una sola hoja de Excel, estoy intentando con el enlace que publican pero no me sale nada, Un saludo, gracias anticipadas

  5. Hola gracias por la mnacro funciona.. pero lo unico es que una columna de fechas que tengo como dd/mm/yyyy la identifica como mm/dd/yyyy
    asi que el 2 de octubre (02/10/2013) me lo convierte en 10 de febrero (10/02/2013) … que podra ser?

  6. excelente. pero me hubiera gustado todo en una hoja y no trabaja bien con nombres de archivos grandes, me marco un error, seguire buscando, gracias

  7. Hola,
    alguien podría ayudarme? esta macro me da un error 1004 en la línea:
    Unidos.Worksheets(Unidos.Worksheets.Count).Name = NombreLibro & «_» & Libro.Worksheets(K).Name
    Gracias!

  8. Hola. Alguien podria echarme una mano con esto? al ejecutar la macro me da un error 68 en la siguente linea: ContadorFicheros = Dir$(Directorio + «\*.*»),
    Estoy intentando unir varios libros formato .xlsx en uno solo con Excel 2011 para Mac.
    Gracias de antemano. Saludos

  9. Tiene el mismo problema que RDBMerge: si quieres juntar archivos con más de 3 posiciones decimales tras coma española la considera coma de millares al estilo anglosajón. ¿alguien tiene solución para este problema?

  10. El problema es que tengo 365 archivos .CSV con números con más de 3 decimales y al unir estos no identifica la coma decimal sino que pega el número entero (i.e. 14,12345 se pega como 1.412.345). Además, las cifras con 2 decimales, las pega como texto.

  11. Crea un VB que te haga un guardar como xls cada uno de los CSV. Después ejecuta este proceso.

    Me parece muy raro, si fuera al contrario, que el separador fuera . tendría problemas con la configuración regional.

  12. HOLA ALGUIEN QUE ME PUEDA AYUDAR TENGO 8 LIBROS DE 30 HOJAS, NECESITO CONCENTRAR TODO EN UN SOLO LIBRO PERO ESE LIBRO DEBERA CONTENER LAS 30 HOJAS CON LA INFORMACION DE LOS 8 LIBROS, ALGUIEN QUE ME AYUDE PORFA :(,
    EXPLICADO DE OTRA FORMA, EL LIBRO QUE CONTENGA EL CONCENTRADO DEBERA TENER LAS 30 HOJAS LA HOJA1 DEBERA CONTENER LA INFORMACION DE TODAS LAS HOJAS 1 DE CADA LIBRO, AYUDA PORFAVOR…

  13. Hola, quisiera saber si podrian ayudarme con un problema que tengo con excel, cada inicio de año recibo un archivo de excel con todos los datos de nuestroa clientes (id, nombre, domicilio, email,) y cada inicio de mes recibo otro archivo de excel con los clientes actualizados aunque con menos informacion (id incompleto, nombre, domicilio) y es muy comun que me pidan enviar informacion a los clientes por email por lo que debo estar comparando entre ambos archivos los datos en el archivo mensual debo verificar si el clientes esta vigente si es asi ir al archivo anual para obtener si id y email para enviar la información.

    Existira una forma de unir ambas hojas por el campo de nombre ya que es el unico que no cambia en los archivos. Espero puedan ayudarme con esto gracias

  14. Hola, para los que preguntaron cómo unir varias hojas de un libro les tengo este vba, lo copié hace ya mucho tiempo y le hice modificaciones como colocarle el nombre de la hoja al inicio de cada segmento. Espero les sirva.

    Sub Combine()
    Dim J As Integer

    On Error Resume Next
    Sheets(1).Select
    Worksheets.Add ‘ add a sheet in first place
    Sheets(1).Name = «Combined»

    For J = 2 To Sheets.Count ‘ from sheet 2 to last sheet
    Sheets(J).Activate ‘ make the sheet active

    lcName = ActiveSheet.Name
    Sheets(1).Range(«A65536»).End(xlUp)(4).Value = «¬» + lcName

    ActiveWindow.FreezePanes = False
    Range(«A1»).Select
    Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select

    Selection.Copy Destination:=Sheets(1).Range(«A65536»).End(xlUp)(2)
    Next
    End Sub

    • Hola Sergio, mi nombre es Celina.
      Es posible que con este macro, se pueda sumar los importes y contar las transacciones en cada hoja y que haya una hoja que se resuma cada hoja con el total y cantidad de cada recurso, ejemplo hoja 1 sellado comercio, hoja 2 sellado cierre local, etc… porque hay mas de 100 recursos, Quisiera que en la primera hoja haya un resumen de cada recurso, con su nombre, cantidad y el total. Gracias

  15. Creo que te serviría más utilizar access, mirando la información como una base de datos, aunque con excel podrías utilizar funciones como buscarv (consultarv en 2010). También podrías apilar la información en una sola hoja de excel y utilizar tablas dinámicas.

  16. Hola a todos, espero me puedan ayudar, yo cuento con 10 libros cada uno con 150 hojas codificadas (con un formato dado y una fotografía) entonces todas estas hojas las quiero unir en un solo libro (tal cual su formato, incluyendo la fotografía y el orden de acuerdo a su código.ESPERARE ANSIOSAMENTE SU RESPUESTA ..OJALAS PUEDAN AYUDARME!!

  17. Hola Sofía,
    Creo que es lo mismo que me pasó, surge porque a las pestañas del nuevo libro les pone un nombre que combina el nombre de su archivo con el nombre de la pestaña, y si eso se pasa de los 30 caracteres (tamaño máximo de la etiqueta de una pestaña) falla. Lo podés solucionar achicando el nombre de los archivos originales y/o el de las pestañas antes de correr la macro.

  18. Por Ana Virginia Chiesa, dic 1, 2014 | Responder

    Hola Sofía,
    Creo que es lo mismo que me pasó, surge porque a las pestañas del nuevo libro les pone un nombre que combina el nombre de su archivo con el nombre de la pestaña, y si eso se pasa de los 30 caracteres (tamaño máximo de la etiqueta de una pestaña) falla. Lo podés solucionar achicando el nombre de los archivos originales y/o el de las pestañas antes de correr la macro.

    Esto se puede solucionar modificando la macro, para que el nombre de la hoja, tenga el mismo nombre de origen.

  19. Si deseseas que no se combine los nombres y que mantenga en nombre de la hoja de origen puedes modificar en la linea:

    Unidos.Worksheets(Unidos.Worksheets.Count).Name = NombreLibro & «_» & Libro.Worksheets(K).Name

    Cambiar por:

    Unidos.Worksheets(Unidos.Worksheets.Count).Name = Libro.Worksheets(K).Name

  20. Hola es muy bueno la macro de unir archivos, pero me trae las hojas de manera repetida cada una la hoja importe 1 se repite 3 veces, la hoja importe 2 aparece solo una vez y la hoja importe 3 se repite 6 veces. Solo necesito que copie una ves cada hoja
    como se soluciona esto???
    Gracias

    • Sucede que así están en los archivos origen, es decir, el libro importe1.xlsx contiene tres hojas con la misma información, el libro importe2.xlsx contiene solo una hoja y el libro importe3.xlsx contiene 6 hojas con la misma información.

  21. Hola, me gustaría saber si es posible que la unión se realice en el mismo excel en donde tenemos la macro y no en uno nuevo…

    Gracias!

  22. Hola,
    Yo tengo 10 libros con dos pestañas cada uno. En todos los libros, sus dos pestañas tienen el mismo nombre: General y Finance. Cada juna de ellas tiene un formato diferente pero coincide en cada libro.
    Así pues mi cuestión es:
    ¿Cómo podría unir, por un lado todas las pestañas General de todos los libros y, por otro lado todas las pestañas Finance?
    El problema es que no puedo consolidar las hojas porque me suma las celdas, etc, pero no me copia los datos de una a continuación de la otra, que es lo que necesito.

    Muchas gracias!

  23. Hola que tal, a mi no me corre la macro en el directorio que quiero hacer el proceso, tengo alrededor de 70 archivos con un promedio de 50 hojas cada uno, quiero unificar todas las hojas en un solo libro, no me importa si conserva el nombre de la hoja, solo me importan los datos. Me marca error en la siguiente linea:
    Loop
    Unidos.Worksheets(2).Select
    With Unidos

    No logro descubrir cual es el error. De antemano las gracias por su ayuda :)

  24. Hola, me gustaría saber si es posible que la unión se realice en el mismo excel en donde tenemos la macro y no en uno nuevo…

    Gracias!

  25. Buenas tardes yo quisiera hacer algo mas especifico. Yo quiero saber si hay la posibilidad de agrupar hojas de calculo por grupo o carpeta. para poder tener 1 solo archivo excel por cliente donde en cada uno de los grupos sea un mes Ejemplo ENERO, FEBRERO, MARZO… tenga 4 hojas de calculo (COMPRA, VENTAS, DECLARACION, GASTOS) y que cada grupo sea desplegable. No conozco Excel a fondo aun sin embargo quiero saber si es posible hacerlo.

  26. Pingback: Truco Excel. Abrir múltiples libros de Excel en distintas hojas de un nuevo libro | Análisis y Decisión

  27. ESTOY INTENTANDO USAR TU MACRO UNIR Y ME DA EL ERROR 1004 EN LA SIGUIENTE LINEA:

    Unidos.Worksheets(Unidos.Worksheets.Count).Name = NombreLibro & «_» & Libro.Worksheets(K).Name

    • Este error se produce producto que los nombre de los archivos abiertos son muy grandes. Te aconsejo que selecciones todos los archivos apretes f2 y le cambies el nombre a todos por 1. Automaticamente te creara la n cantidad de archivos con nombres 1(1), 1(2) …. 1(n). asi tendran un nombre corto y la macro funcionara.

  28. Hola excelente tu ayuda, se ejecuta el código de manera correcta ya que lleva todos los libros y los convierte en uno solo, pero cuando finaliza me sale un error y no guarda así que no puedo trabajar sobre eso, me pueden ayudar a resolver que podría ser.

    Gracias saludos.

  29. Pingback: Macros útiles de Excel | israelmex

  30. Hola!

    Tengo el mismo problema de Julian, combina los archivos, pero al momento de guardar sale un error y no permite salvar el archivo, ¿podrían ayudarnos, porfa?

  31. Muchas gracias!!!! Eres un genio!!

    A los que les sale error 1004, muy posiblemente se deba como a mí, que el nombre de los libros (o de las hojas) son extensos. Sólo hay que reducir de caracteres y funcionará. Si en el intermedio sale que hay que guardar cambios, aceptar y listo. Excluye las macros de los libros, pero eso no es problema porque se pueden añadir los módulos con comodidad.

    Gracias a todos los que han hecho posible esta ayuda.

  32. Muchas gracias, lo de el error 1004 ya está explicado un poco más arriba porque sucede. Ante el éxito que tiene esta entrada prometo hacer otra versión mucho más avanzada de este libro de Excel. Saludos.

    • Muy bueno tu aporte, existe la posibilidad que al unirse varios libros en uno se pueda agregar un total donde refleje el total de transacciones en moneda y la cantidad de transacciones, para pasar como estadísticas.
      Gracias.

  33. es una excelente macros, pero alguien me puede apoyar para que solo me copie algunas columnas de los libros y los pegue en un solo libro

  34. Yo tengo la misma necesidad que hipolito. Necesito copiar un rango especifico de varios libros (300 libros ) en otro único, todo en una sola hoja en forma de listado. El mismo rango en todos los libros.

  35. corrigo mi comentario. no aparece nada en el nuevo archivo de excel. solo agrega el primer archivo, y en el resto de las hojas de solo pone el nombre del archivo en las etiquetas

  36. Hola, tengo una inquietud, resulta que la macro en la versión de office 2016 no funciona, hay alguna actualización para esta versión?, de antemano, Gracias!

  37. Es un trabajo excelente! felicitaciones!
    Mi consulta es si puedo guardar con macros «.xlsm» ya que mi libro principal contiene macros que deseo utilizar a posteriori.
    Muchas gracias

  38. Hola, utilizo Mac y tengo el 365, por tanto se supone que la versión más actualizada para Mac. No estoy me hábil con excel y necesito unir varios libros con las mismas hojas en un sólo archivo. Me he descargado la Macro pero al ejecutarla me dice que no es compatible con esta versión de excel. ¿Hay alguna solución? Os estaría muy agradecido. Saludos.

  39. Hola, te agradezco por este aporte, me ha ayudado bastante. Sin embargo tuve que hacer un pequeño ajuste en el nombre de la macro (ZZUNIR) y por supuesto en el código. Esto debido a que si se tienen archivos que inicen por la letra Z el programa no entra en el ciclo que permite crear el numero de sheets. Asi lo he dejado:

    Do While ContadorFicheros «» And UCase(ContadorFicheros) «ZZUNIR.XLSM»

  40. Hola, para evitar las hojas en blanco que puedan tener los libros de origen les agregaria esta condicion en el bucle

    For K = 1 To NumHojas
    If Application.WorksheetFunction.CountA(Libro.Worksheets(K).UsedRange) 0 Then
    Libro.Worksheets(K).Copy after:=Unidos.Worksheets(Unidos.Worksheets.Count)
    NombreLibro = Replace(Libro.Name, «.xlsx», «»)
    Unidos.Worksheets(Unidos.Worksheets.Count).Name = NombreLibro & «_» & Libro.Worksheets(K).Name
    End If
    Next K

  41. Muchas gracias por la macro, me ha ahorrado mucho trabajo y sobre todo me ha permitido asegurar que no hay errores en los datos combinados en el nuevo fichero Excel

  42. muchas gracias por el aporte, solo abría que especificar al principio que los archivos a unir deben tener como requisito tantas letras y no estar separados los nombres por lo demás es genial y como dato adicional que si el archivo trabajado cuenta con otras hojas en blanco estas también las unirá la macro.
    gracias

  43. Hola,
    Me podrían ayudar a modificar la macro para que solo seleccione la primera hoja de los libros que quiero unir.
    Por favor
    Gracias

  44. Buenas tardes es la primera vez que voy a utilizar una Macro, me podrían facilitar un tutorial de como unificar varios libros de Excel en un solo Excel, manejo bases de datos y necesito ver si hay duplicidades de mis bases de datos

  45. Buscando información sobre esto llegué a esta página y me encontré con esta macro fuera de serie que me solucionó el problema.
    Excelente macro.
    Felicitaciones y millón de gracias.

  46. Alguien sabe como solucionar este problema: Hice una macro en excel 2016 para una empresa, ahora se desea pasarlo a una buena parte del personal, pero al ejecutarla en otras computadoras marca que no encuentra el proyecto o funciones, ya se que se puede copiar la referencia que falta, pero deseamos que al grabar la macro se guarde junto con sus DLLS. para que el usuario no tenga que estar instalando.

  47. Muy buena macro.
    Pero tengo un problema. Las hojas que quiero copiar están referenciadas a otros archivos.
    Por lo que necesitaría que solo me copie los valores y no las formulas.
    Alguien sabrá que debo cambiar ?

  48. Hola que tal, me podrian ayudar con este error?

    RUN-TIME ERROR ´9

    Y ESTA LINEA ESTA SELECCIONADA
    Loop
    Unidos.Worksheets(2).Select

    Saludos

  49. Por favor tengo un archivo de excell con 108 pestañas de las cuales 100 tienen el mismo formato de columnas, necesito unir en una sola hoja de excell las 100 pestañas que tienen el mismo formato. Por favor ayúdeme es muy urgente

  50. Hola buenos días.
    Necesito de su ayuda para aplicar esta MACRO en mi planilla. No se como debo modificarla.
    cual es la linea para indicar que archivos son los que voy a unir
    como debo hacer si la hoja que deseo extraer se encuentra en un libro (como indico que hoja se extrae)

  51. Señoritas… Consulta, el código anda perfect, pero yo quiero que al unir los archivos la la «hoja1» por defecto se elimine para no tener que entrar al archivo y borrar, para entregarlo en un reporte que hago. Agradecería que alguien me ayudara, saludos!

  52. Hola y muchas gracias por este valioso aporte, por favor necesito su ayuda para resolver algo, los archivos que necesito unificar se encuentran en una carpeta compartida, cuando en el codigo escribo 192.168.01.12\\users…… ect, me salta un error (se esperaba expresión), como debo hacerlo de manera correcta ? gracias mil saludos y nuevamente gracias por este gran aporte.

  53. hola, bajo este mismo ejemplo de macro, al unir los libros se puede insertar el nombre de cada archivo a los datos ya unificados, por ejemplo: Si se importa o une los datos del archivo de nombre BASE1 Y el de BASE2, que estos mismos datos puedan ser distinguidos a traves de la incorporacion del nombre de origen del archivo?

    Muchas gracias de antemano por la pronta respuesta

  54. He probado la Macro del archivo comprimido que compartes y funciona de maravilla. Muchas Gracias!!

    Una macro para unir XLS de excel imprescindible.

  55. Buenos días Estimados

    Como hago para consolidar en una sola linea varias lieneas de datos de un mismo cliente, por ejemplo en una hoja de calculo me aparecen varias vece los datos del mismo cliente, y los quiero consolidar a una sola linea, Ej.

    Juan Perez codigo #2416
    2416 Retencion I.R. 2 % Clientes Canc. fact.4116-4118-4123 198.53
    2416 Retencion I.R. 2 % Clientes Canc. fact.4116-4118-4123 4,477.94
    2416 Retencion I.R. 2 % Clientes Canc. fact.4116-4118-4123 1,025.24
    2416 Retencion Alcaldia 1 % Clientes Canc. fact.4116-4118-4123 99.26
    2416 Retencion Alcaldia 1 % Clientes Canc. fact.4116-4118-4123 2,238.80
    2416 Retencion Alcaldia 1 % Clientes Canc. fact.4116-4118-4123 512.62
    vez se observa se repite el campo 2% tres veces e igual el campo 1%, los quiero consolidar a un solo valor en una sola linea

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *