Muy buen trabajo con este modulo, me ha venido muy bien. Grandisimo trabajo. desconocía el FSO. Me gustaría unir este proyecto junto con el tuyo de "BUSCAR, SELECCIONAR y OBTENER la ruta de un ARCHIVO | CARPETA desde VBA - Excel" en el cual utilizas fd como un dialogo de aplicación. en este video podría dar a la variable "directorio" como lo haces con el aplicationFileDialogFolderPicker?. Muchísimas gracias de antemano
¡Hola! Muchas gracias por comentar, sí, es correcto, puede hacer la implementación de la funcionalidad para poder seleccionar el directorio desde el FileDialog, si tiene inconvenientes no dude en contactarme al correo que dejo en la descripción del video. ¡Saludos!
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
¡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! ruclips.net/video/txW9ZR5OoLc/видео.htmlsi=yLxbi1Lg-jPj0K6-
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?
¡Hola! Para las celdas visibles podemos usar la propiedad SpecialCells(xlCellTypeVisible) Acá te dejo un video donde usamos esa propiedad. ruclips.net/video/snBwgvNKoOI/видео.htmlsi=j60I9_yMOr0HS1ih ¡Saludos!
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
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....
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
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.
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!
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!
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 ruclips.net/video/91zkI1bvk9s/видео.html revísalo y elige la opción que más te convenga, saludos!!
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.
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
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?
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!!
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 🇲🇽👌👏🤝
¡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
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 👍🏽
¡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: ruclips.net/video/txW9ZR5OoLc/видео.htmlsi=8mgWdWtejhTu3X8j
@@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
¡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
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
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")
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 '
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
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
¡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/
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.
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.
Hola Joan, te recomiendo ver este video donde doy tips de depuración: ruclips.net/video/WY3_-MEZV8M/видео.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!
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?.
¡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!
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
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
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
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
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
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
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
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
¡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.
¡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.
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?
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
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. ruclips.net/video/YPPeIftGs0s/видео.html
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
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.
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!
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
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.
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!! ruclips.net/video/TFWj_VpdGD8/видео.html&ab_channel=InteligenciaEficiente
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?
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
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...?
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
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.
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
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!!
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.
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!
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
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!!
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 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
@@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.
Buen dia! quisiera incorporar archivos como en el ej anterior (ruclips.net/video/G_jLURKjzi4/видео.html) como podria modificar las lineas para ingreso manual? Muchisimas gracias!!!
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
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é?? :(
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.
¡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!
Gracias me ayudaste con un reto que me pusieron en el trabajo y salieron mas ideas, gracias muchas gracias de verdad
¡Me alegra mucho leer tu comentario Sebastián! Un saludo :D
Gran tutorial excelente video, todos los éxitos
Muchas gracias!! Igualmente para ti :D
Muchas gracias! Me ayudo muchisimo. Para mayor cantidad de datos, declarar la variable ultimaFila como "long".
¡Gracias por comentar! Es correcto, con long evitamos el error overflow :D
Me sirvió, excelente, muchas gracias.
Muy buen trabajo con este modulo, me ha venido muy bien. Grandisimo trabajo. desconocía el FSO. Me gustaría unir este proyecto junto con el tuyo de "BUSCAR, SELECCIONAR y OBTENER la ruta de un ARCHIVO | CARPETA desde VBA - Excel" en el cual utilizas fd como un dialogo de aplicación. en este video podría dar a la variable "directorio" como lo haces con el aplicationFileDialogFolderPicker?.
Muchísimas gracias de antemano
¡Hola! Muchas gracias por comentar, sí, es correcto, puede hacer la implementación de la funcionalidad para poder seleccionar el directorio desde el FileDialog, si tiene inconvenientes no dude en contactarme al correo que dejo en la descripción del video. ¡Saludos!
Bastante buena 👍 ❤
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
¡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! ruclips.net/video/txW9ZR5OoLc/видео.htmlsi=yLxbi1Lg-jPj0K6-
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?
Hola muchísimas gracias por la asesoría! Tengo un tema adicional, solo quiero copiar las celdas visibles. Como puedo hacerlo?
¡Hola! Para las celdas visibles podemos usar la propiedad SpecialCells(xlCellTypeVisible) Acá te dejo un video donde usamos esa propiedad. ruclips.net/video/snBwgvNKoOI/видео.htmlsi=j60I9_yMOr0HS1ih ¡Saludos!
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
¡Hola Alex! te dejo este video, espero que te sirva: ruclips.net/video/vLjRBBAX72A/видео.html&ab_channel=SergioAlejandroCampos-EXCELeINFO
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....
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
Muchas gracias, en la empresa me pidieron realizar esto y la verdad, no lo tenia claro...
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.
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!
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!
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 ruclips.net/video/91zkI1bvk9s/видео.html revísalo y elige la opción que más te convenga, saludos!!
Qué buen video, gracias!!, Disculpa y si en lugar de una carpeta quiero seleccionar el archivo desde distintas rutas, ¿Cómo seria?.
Hola Yunes! Si deseas una asesoría más personal puedes escribirme a: inteligenciaeficienteyt@gmail.com SALUDOS!!
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.
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
@@InteligenciaEficiente Gracias infinitas, por tanta colaboración
@@InteligenciaEficiente muchas gracias, funciono.
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?
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!!
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 🇲🇽👌👏🤝
¡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
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 👍🏽
Buena tarde. Disculpa y que pasa si en el "archivoOrigen" hay filas en blanco pero mas abajo hay mas datos?, como podrias llevarte eso?
¡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: ruclips.net/video/txW9ZR5OoLc/видео.htmlsi=8mgWdWtejhTu3X8j
Genial muchas gracias
¡Gracias a ti! :D
@@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
@@etudelas Claro que sí con gusto, puedes enviarme mensaje a la página de fb: facebook.com/InteligenciaEficiente
@@InteligenciaEficiente muchas gracias. Lo haré
Hola, estan excelentes tus videos, una pregunta si deseo unir 5 hojas en lugar de solo 1 de ellas como deberia configurar la macro.
¡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
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
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")
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 '
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
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
¡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/
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.
.
Hola para poder ayudarte te mejor te sugiero que me contactes a la pagina de facebook de la descripción, saludos!!
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.
Hola Joan, te recomiendo ver este video donde doy tips de depuración: ruclips.net/video/WY3_-MEZV8M/видео.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!
@@InteligenciaEficiente Muchas gracias. En efecto ese era el inconveniente.
Buen día, ¿Puedo eli8minar los encabezados?. Gracias
Claro que es posible, podrías usar el comando Rows(1).EntireRow.Delete
hola , me da error en Set fsoFolder = fso.GetFolder(directorio) como puedo corregir? los archivos lo tengo en Documentos
Me salió el mismo error, como lo corregiste, me puedes ayudar por favor
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?.
¡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!
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
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
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
que hacer si la ruta de archivos a combinar esta en otra parte?
¡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
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
Hola Sebastian! Con gusto puedes enviarme un correo a inteligenciaeficienteyt@gmail.com para poder revisar el error que te aparece SALUDOS!!
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
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
Excelente.
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?
¡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.
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
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
Hola me ocurre igual, y no se porque todo esta correcto ;(
Hola. Buenas tardes, me da el mismo error, ya sabes cómo corregirlo? 🥺
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
¡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.
Hola Y si yo agrego nuevos archivos Se actualizan todos o solo los que agregue en la carpeta??
¡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.
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?
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
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
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
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. ruclips.net/video/YPPeIftGs0s/видео.html
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
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.
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!
hola excelente video, me da el error 438 Object doesn't support this property or method, sabes como poder solucionarlo?
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
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.
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!! ruclips.net/video/TFWj_VpdGD8/видео.html&ab_channel=InteligenciaEficiente
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?
Hola Salvador, si necesitas ayuda más personalizada con gusto puedes mandarme un correo a: inteligenciaeficienteyt@gmail.com
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
Hola Lucila, para poder ayudarte por favor envíame tu macro al correo que dejo en la descripción, saludos! :D
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...?
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
@@InteligenciaEficiente Muchas gracias encontré la forma de reformar la macro para que la tomara de diferente manera, mil gracias por contestar 👍🏻
@@sergioandresrealforero2971 Excelente!!
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.
Tengo la misma petición
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
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!!
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.
Muchas gracias por contactarme por correo Maribel, cualquier cosa aquí seguimos! :D
Hola Maribel , puedes compartir la solución ? Tengo el mismo problema:(
Sabes como seria el codigo en ingles? Creo que me esta generando confusion pasar del espanol al ingles en la programacion
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!
Me funcionó pero solo me unió tres archivos, ya que me marca error número 6 derramamiento, como lo puedo solucionar?
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
@@InteligenciaEficiente Si, muchas gracias ya lo corrobore y si funciono
no me da tiempo copiarlo podrias prepararlo para descargar?
La macro la puedes descargar en la descripción, de ahí puedes copiar el código, saludos!!
@@InteligenciaEficiente muchas gracias
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!!
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")
@@InteligenciaEficiente Muchísimas gracias! Y con el tema de que mis columnas no inician en la fila 1, sino en la 7? 🙃
@@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
@@InteligenciaEficiente Perfecto, muchísimas gracias!!
@@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.
Buen dia! quisiera incorporar archivos como en el ej anterior (ruclips.net/video/G_jLURKjzi4/видео.html) como podria modificar las lineas para ingreso manual?
Muchisimas gracias!!!
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
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é?? :(
Hola! Podrías enviarme tu macro al correo que encuentras en la descripción para poder ayudarte :D
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.
¡Hola! Si aún continúas con problemas puedes enviarme tu macro por correo: inteligenciaeficienteYT@gmail.com ¡Saludos!