Sin duda alguna me ha servido al 100%!!! eres un crack!! una pregunta nada mas!! al copiar el segundo archivo, quiero dejar un espacio de 10lineas aprox. en blanco y que después me copie el segundo archivo, se puede hacer??
Hola excelente trabajo! Consulta si yo quisiera que la carpeta donde se almacenan los archivos estuviera en un sharepoint compartido como podría hacerlo?
Hola, hago la macro tal cual, cuando importo los datos Hasta me figura el msj de Libros Importado correctamente pero no se actualizan los datos, sigue el achivo consolidado sin datos. AYUDA por favor
Buen día EXCELENTE video, me funcionó a la perfección, Unicamente, cuando se corre el proceso de importación se abre una carpeta por cada archivo, es decir, tengo que estar dando ESC cada que se abre la carpeta, pero esto por cada archivo. Cómo puedo hacer para que la importación de los libros se haga de forma automática sin que se abra ninguna carpeta por cada archivo? Saludos mi estimado
Saludos Ing. Excelente solución a la consolidación de datos de varios archivos. Tengo una inquietud, ya información importada como se podría ordenar la información por la columna "fecha de modificación" ascendente. Espero su comentario gracias.
hola muy buen tutorial!!, pero tengo una pregunta si yo quisiera luego de importar los archivos, importar otra carpeta nueva con mas archivos, que codificación debería usar para que los datos nuevos ingresados (de la carpeta nueva) me queden al final del ultimo dato ingresado (de la carpeta anterior) y no se me borren los que ya se importaron
Muchas gracias por el video, me sirvio muchisimo! Te hago una consulta, al momento de agregar los datos de la columna NombreArchivo no se me copia con el mismo formato que mis otras columnas, es decir, con un color gris de fondo. Sabras como puedo agregar eso en el codigo?
Excelente video y explicación !, pero me asalta la duda de como se puede incluir una condición que borre los filtros de los libros a consolidar, ya que si la informacion de origen tiene algun filtro aplicado, esas lineas no quedan incluidas en el consolidado final.
Hermano, buenos dias. Existe la posibilidad de que los archivos que abre la macro para copiar la informacion, sean desfiltrado y luego siga con el proceso. Sucede que me me envian archivos filtrados y cuando la macro correo solo consolida lo que esta filtrado. Necesito que desfiltre para que copie todo.. me ayudas?
Muy buen video. Te consulto que se debería modificar en el código si los archivos tuvieran varias hojas y solo quiero que consolide el nombre de una hoja que se repite en todos los archivos? Gracias
Hola, en el código solo se selecciona una hoja de origen, en este caso la primera wbLibroOrigen.Worksheets(1), por eso se le indica el numero 1 entre paréntesis, también puedes referirte a la hoja por su nombre wbLibroOrigen.Worksheets("Hoja1") Saludos
Hola, tendrías que recorrer todas las hojas de tu libro de origen para luego copiarlas. te pongo un ejemplo La variable hoja representa cada hoja de tu libro. For Each hoja In ThisWorkbook.Worksheets MsgBox hoja.Name Next hoja
hola buen dia, quisiera preguntarte si es posible utilizar esta misma macro con archivos que Esten ubicados en diferentes carpetas? habria que colocar todas las rutas ? como se podria lograr esto?
Muchísimas gracias, fue muy ilustrativo y funciona perfecto. Sin embargo quisiera hacerte una consulta:si quisiera que copiara archivos cuyo nombre tenga un pedazo de cadena específico? por ejemplo, todos empiecen por una palabra pero los quiero agrupar en una hoja por el nombre de la ciudad(segunda parte de la cadena), tienes algún archivo que complemente esta idea?
Hola, en esta linea de código puedes modificar Archivos = DIR(Ruta & "*.xlsx") Si quieres que tome los archivos con una palabra especifica, por ejemplo total, ese texto deberías colocarlo antes del símbolo *. de esta manera. Archivos = DIR(Ruta & "total*.xlsx") saludos
Muchas gracias por el aporte, me queda una duda, me funciona siempre con archivos xlsx, uso también xls y cambie la extensión en el código, funciona hasta 70mil registros de ahí...interpreta que la fila destino vuelve a ser 2, que crees que sea?
@@maihuire11 muchas gracias, aprovecho para comentarte que el archivo donde queda el consolidado es xlsm, por lo tanto logré resolverlo haciendo que ufila sea igual a la fila de la celda activa después de desplazarme totalmente hacia abajo y sumando uno. Así sí me permitió quitar ese impedimento
Buenas, lo he intentado y al ejecutarlo, aparece el mensaje siguiente "Error de compilación - Loop sin Do" He puesto Do antes y después de Loop y nada, sigue dando el mismo error. Parece un error de órdenes.
Amigo excelente video y bastante clara la explicacion. La verdad muy completo el tutorial🤘 El siguiente mensaje es por una duda que manejo que seria la siguiente, es posible realizar exactamente la misma macro pero en vez de que obtenga todos los archivos de una carpeta en especifico que obtenga un archivo que yo elija desde el explorador de archivos. Esto con la idea de que uno escoja cada archivo a cargar en la BD de excel. Saludos!
🤟 Sub ImportarDatos() Dim wsHojaDestino As Worksheet Dim Ruta As String Dim wbLibroOrigen As Workbook Dim uFilaOrigen As Long Dim uFilaDestino As Long Application.ScreenUpdating = False Set wsHojaDestino = ThisWorkbook.Worksheets("Hoja1") Ruta = Application.GetOpenFilename(Title:="Por favor seleccione un libro") If Ruta = "False" Then Exit Sub End If Set wbLibroOrigen = Workbooks.Open(Ruta) uFilaOrigen = wbLibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1 If uFilaDestino > 1 Then wbLibroOrigen.Worksheets(1).Range("A2:F" & uFilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & uFilaDestino) End If
wbLibroOrigen.Close SaveChanges:=False MsgBox "Libros importados correctamente!", vbInformation, "Hoja1" Application.ScreenUpdating = True End Sub
Si tengo 2 tablas independientes una al lado de la otra en la misma hoja, sería posible hacer que esta macro me consolide información de otros libro tomando en cuenta que tienen el mismo formato desde 2 tablas y me pegue la información correspondiente a cada tabla. Quedo atento.
lo que para es que necesito en el momento es copiar varias hojas que tienen imagenes pero estan en un solo libro, y no he podido personalizar la macro para que me lleve las imagenes
hola, tengo una consulta si necesito rescatar un dato en especifico de cada libro como lo puedo hacer he tratado colocando condiciones pero no me funciona
@@maihuire11 Condiciones con respecto al IF, ELSE.. lo manejado solo queria saber que cuando mencionabas condiciones. cuales eran esas condiciones o ese requerimiento. ?
Hola muy bueno el tutorial me ayudo muchisimo!! sólo tengo una duda, cunado en las hojas a copiar tengo unas columnas con validación de datos (listas), me salta un error y me deja el archivo consolidado dañado, como puedo solucionarlo?
Hola, me gustaría ayuda estoy intentando unir y copiar de varios archivos en 1 pero me esta dando Error 52 y realmente no se que cual prodira s e r el problema. Me podrían ayudar ?
En este caso la macro limpia el contenido anterior y vuelve a cargar nuevamente los datos. Eso es porque hay en una linea el código que dice .clearcontents. Si quieres que no lo borre y se siga agregando borra esa línea de código. Fijate en el minuto 20:28 Saludos
@@maihuire11 Ok, voy a mirar, exactamente es lo que quiero porque debo estar sumandole archivos diariamente, el primer dia si me sirve tal cual como la tienes ahi pero ya los siguientes dias no.
Estimado buenas noches, muy bueno el tutorial, pero tengo dos preguntas 1- tengo un campo fechas en un archivo csv de la forma 01/11/2022 (original) pero los importa como 11/01/2022 y cambia el formato de la celda a fecha, sin embargo cuando la fecha pasa a 13/11/2022 lo deja asi y el fomrato de la celda esta en general.. 2-Como hago para eliminar toda la fila en el erchivo origen que contenga un determinado caracter en en una fila y columna cualquiera. Te agradeceria me puedas ayudar
Hola, acabo de solucionar el 2 punto. En cuanto al primero aun, aclarar que en la hoja de consolidado todas las celdas estan en formato general. Espero puedas darme una ayuda
Yo creé el mismo archivo pero de una tabla dinámica, el problema es que no se cómo hacerle para que me pegue valores a la hora de importarlo y no las formulas
Hola, te doy un ejemplo simple: Los valores con formulas están en la celda A1 y lo estoy pegando a B1 solo valores. Range("A1").Copy Range("B1").PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Guíate de esto y adaptalo a tu desarrollo. Saludos
Muchísimas gracias por este aporte, me funciono perfectamente, aunque tengo una duda, como podría hacer para que al importar documentos de texto me los delimite automáticamente por comas?
Selection.TextToColumns Destination:=Range("rango de seleccion"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True Con este codigo de arriba podras delimitar el texto que tengas seleccionado por coma, lo unico que tienes que hacer es establecer el rango en el destino
COMO HAGO SI SON VARIAS HOJAS? NECESITO ME COPIE LOS DATOS DE VARIAS A UNA SOLA HOJA CUANDO TENGAN ALGUNAS DE LAS DOS VARIABLES EN ESA CELDA. AL TENERLA ESOS DATOS SE PASEN A UNA SOLA HOJA. ESTAMOS HABLANDO QUE ESOS DATOS SE ESCRIBEN EN LINEA DE AL MENOS 100 HOJAS DENTRO DEL ARCHIVO DE EXCEL. SE PUEDE?
hola excelente video.... tengo una pregunta en esta linea ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1 me aparece el siguiente error : " error 91 variable de objeto o bloque with no establecido....... que podra ser?? de antemano muchas gracias por la ayuda
Hola, ese error ocurre porque no asigaste una hoja a la variable wsHojaDestino. Debes colocar este codigo al inicio. Set wsHojaestino=Thisworkbook.Worksheets("Consolidado")
@@maihuire11 hola... mil gracias por responder, revisando veo que si tiengo la linea que dices y bueno no se que pasa... te voy a dejar el codigo completo y tu me diras si hay algo mal... Sub consolidar() Dim wsHojaDestino As Worksheet Dim Ruta, Archivos As String Dim wblibroOrigen As Workbook Dim ufilaOrigen As Long Dim ufiladestino As Long Set wshojasdestino = ThisWorkbook.Worksheets("consolidado") Ruta = ThisWorkbook.Path & "\files\" Archivos = Dir(Ruta & "*.xlsx") Do While Len(Archivos) > 0 Set wblibroOrigen = Workbooks.Open(Ruta & Archivos) ufilaOrigen = wblibroOrigen.Worksheets(2).Range("A" & Rows.Count).End(xlUp).Row ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
wblibroOrigen.Close savechanges:=False Archivos = Dir() Loop MsgBox "libros importados correctamente", vbInformation, "Consoloidado" End Sub nuevamente te agradezco inmensamente tu ayuda...
@@vichoaven el error que tienes es de la variable: la declaras como wsHojaDestino y la usas como wshojasdestino (tiene una letra "s" de más) Esta linea "Set wshojasdestino = ThisWorkbook.Worksheets("consolidado")" deberia quedar así: Set wsHojaDestino = ThisWorkbook.Worksheets("consolidado")
@@maihuire11 excelente... muchisimas gracias ya se me quito ese error... ahora lo único es que no me esta copiando toda la información solo me copia la info de las 3 primeras columnas pero tengo info hasta la columna BJ y nada.
@@maihuire11 hola me sale igual no puedo resolverlo te dejo el codigo Sub ImportarDatos() Dim wsHojaDestino As Worksheet Dim Ruta, Archivos As String Dim wbLibroOrigen As Workbook Dim uFilaOrigen As Long Dim uFilaDestino As Long Application.ScreenUpdating = False Set wsHojaDestino = ThisWorkbook.Worksheets("Consolidado") Ruta = ThisWorkbook.Path & "\Files\" Archivos = Dir(Ruta & "*.xlsx") Do While Len(Archivos) > 0 Set wbLibroOrigen = Workbooks.Open(Ruta & Archivos) uFilaOrigen = wbLibroOrigen.Worksheets(11).Range("A" & Rows.Count).End(xlUp).Row uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
@@maihuire11 esta abierto la hoja pero ahora me sale el error en uFillaOrigen uFilaOrigen = wbLibroOrigen.Worksheets(11).Range("A" & Rows.Count).End(xlUp).Row
Muy buena aportación. Más como UD. Fíjese que apliqué este ejemplo pero como mi hoja origen lleva fórmulas me marca error y aparece "la palabra destino ya existe blah blah blah" Help!!!
buenos días, gracias por el video, estoy intentando hacer la macro, pero en esta linea me sale depurar, me podrias decir por favor porque se debe ese error? archivos = Dir(Ruta & "*.xlsm")
Hola, el problema podria ser tu variable Ruta, fijate que la ruta que le estas asignando lineas arriba sea la correcta. Igual tambien dime que mensaje de error te sale en la ventana depurar.
Hola, yo también tuve el mismo problema y puede ser porque los archivos estan en algun drive o nube. En este caso te trae la ruta con una dirección http asociada y la macro no reconoce eso. Para solucionarlo es mejor poner los archivos en una carpeta local del computador y ahí no pone problema.
Hola estoy intentando realizar la programación, pero sale error 52. dice nombre o numero de archivo incorrecto. Que puede ser? Mira este es mi codigo, sobre la ubicacion esta como lo indicas, pero diferentes nombres de archivo de excel. Agradezco tu ayuda. Sub ImportarDatos() Dim wsHojaDestino As Worksheet Dim Ruta, Archivos As String Dim wbLibroOrigen As Workbook Dim uFilaOrigen As Long Dim uFilaDestino As Long Application.ScreenUpdating = False Set wsHojaDestino = ThisWorkbook.Worksheets("Consolidado") wsHojaDestino.Range("A2:AK" & wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents Ruta = ThisWorkbook.Path & "\file\" Archivos = Dir(Ruta & "*.xlsx") Do While Len(Archivos) > 0 Set wbLibroOrigen = Workbooks.Open(Ruta & Archivos) uFilaOrigen = wbLibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
If uFilaOrigen > 1 Then wbLibroOrigen.Worksheets(1).Range("A2:Z" & uFilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & uFilaDestino) End If wbLibroOrigen.Close SaveChanges:=False Archivos = Dir() Loop MsgBox "Libros importados correctamente", vblnformation, "Consolidado" Application.ScreenUpdating = True End Sub
te felicito x el video una consulta. ya hice todo el codigo pero no me pega el encabezado del 1 libro. este es el codigo: Sub consolidar() Dim wsHojaDestino As Worksheet Dim Ruta, Archivos As String Dim wblibroOrigen As Workbook Dim ufilaOrigen As Long Dim ufiladestino As Long Set wsHojaDestino = ThisWorkbook.Worksheets("datos") Ruta = ThisWorkbook.Path & "\files\" Archivos = Dir(Ruta & "*.xlsx") Do While Len(Archivos) > 0 Set wblibroOrigen = Workbooks.Open(Ruta & Archivos) ufilaOrigen = wblibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
Hola la cabecera de tuarchivo de origen posiblemente este en la fila 2: Aqui en tu codigo se indica eso en "A2.... wblibroOrigen.Worksheets(1).Range("A2:U" & ufilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & ufiladestino)
ÚNETE al grupo de Whatsapp para compartir más ayuda en Excel VBA. bit.ly/42MyVV4
GRACIAS, MI HERMANO! UN VIDEO SUMAMENTE CLARO y SIN EXCESO DE CÓDIGO. ERES UN GENIO!!! ME SUSCRIBO!
Excelente tutorial lo felicito por tanto aporte
Excelente aporte, realmente explicas muy pero que muy bien claro, sin muchos rodeos. Mis felicitaciones y gracias por compartir este material.
Gracias.
Que buen dominio tienes del VBA me das ganas de aprender
Excelente mini curso, muy claro... gracias totales💯
muchas gracias, excelente tutorial perfectamente explicado, me resultó muy útil
Gracias por tu video muy bien explicado. Estaba buscando algo así, gracias por tu tiempo. Saludos
Muy buen video, cada paso bien explicado…
Gran Tutorial!!! Muchas Gracias!! super útil y muy bien explicado! lo recomiendo!
Muchas gracias por el tutorial, muy bien explicado
Excelente tutorial, muchas gracias por compartir su conocimiento👏
Excelente explicación 😊
Muy buen aporte, funcionó muy bien....
Excelentísimo, me funciono a la perfección, muchas gracias..!
De nada.
Muchas gracias me ayuda de gran manera
Gracias por explicarlo y compartir
Gracias eres lo máximo 😊
Excelente ayuda, muchas gracias.
excelente trabajo
Hola, de gran ayuda este video, Genial!!! Podrias compartirnos el código completo. Mil gracias
Muchas gracias! messirvio!!!
Gracias, funciono excelente.
Que bueno que te haya servido. Saludos
Sin duda alguna me ha servido al 100%!!! eres un crack!! una pregunta nada mas!! al copiar el segundo archivo, quiero dejar un espacio de 10lineas aprox. en blanco y que después me copie el segundo archivo, se puede hacer??
Hola excelente trabajo! Consulta si yo quisiera que la carpeta donde se almacenan los archivos estuviera en un sharepoint compartido como podría hacerlo?
hola, esta buenisimo, como puedo hacer si los datos que quiero compilar tienen formulas y que me lo copie como dato? gracias
Excelente, tengo una consulta.
Si los archivos vienen filtrados y solo deseo copiar las celdas visibles, como seria?
Hola, hago la macro tal cual, cuando importo los datos Hasta me figura el msj de Libros Importado correctamente pero no se actualizan los datos, sigue el achivo consolidado sin datos. AYUDA por favor
Buen día EXCELENTE video, me funcionó a la perfección,
Unicamente, cuando se corre el proceso de importación se abre una carpeta por cada archivo, es decir, tengo que estar dando ESC cada que se abre la carpeta, pero esto por cada archivo. Cómo puedo hacer para que la importación de los libros se haga de forma automática sin que se abra ninguna carpeta por cada archivo?
Saludos mi estimado
Saludos Ing. Excelente solución a la consolidación de datos de varios archivos. Tengo una inquietud, ya información importada como se podría ordenar la información por la columna "fecha de modificación" ascendente. Espero su comentario gracias.
puedes crear otra Macro que ordene lo que desees y asignarle un boton
Excelente!!!
hola muy buen tutorial!!, pero tengo una pregunta si yo quisiera luego de importar los archivos, importar otra carpeta nueva con mas archivos, que codificación debería usar para que los datos nuevos ingresados (de la carpeta nueva) me queden al final del ultimo dato ingresado (de la carpeta anterior) y no se me borren los que ya se importaron
Muchas gracias por el video, me sirvio muchisimo!
Te hago una consulta, al momento de agregar los datos de la columna NombreArchivo no se me copia con el mismo formato que mis otras columnas, es decir, con un color gris de fondo. Sabras como puedo agregar eso en el codigo?
Hola lo puedes hacer con la propiedad Interior.color = vbgray
@@maihuire11 en que parte del codigo deberia agregarse eso?
Excelente video y explicación !, pero me asalta la duda de como se puede incluir una condición que borre los filtros de los libros a consolidar, ya que si la informacion de origen tiene algun filtro aplicado, esas lineas no quedan incluidas en el consolidado final.
Exelente, muy buen video, pero al ejecutar me esta borrando los titulos de la hoja consolidado, que puedo hacer
Hermano, buenos dias. Existe la posibilidad de que los archivos que abre la macro para copiar la informacion, sean desfiltrado y luego siga con el proceso. Sucede que me me envian archivos filtrados y cuando la macro correo solo consolida lo que esta filtrado. Necesito que desfiltre para que copie todo.. me ayudas?
Muy buen video. Te consulto que se debería modificar en el código si los archivos tuvieran varias hojas y solo quiero que consolide el nombre de una hoja que se repite en todos los archivos? Gracias
Hola, en el código solo se selecciona una hoja de origen, en este caso la primera wbLibroOrigen.Worksheets(1), por eso se le indica el numero 1 entre paréntesis, también puedes referirte a la hoja por su nombre wbLibroOrigen.Worksheets("Hoja1")
Saludos
que pasa si no esta la carpeta de los archivos a combinar dentro de la otra?
hola te hago una pregunta si en los libros que deseo consolidar tengo diferentes hojas como hago para que me consolide una en especifico?
Hola, tendrías que recorrer todas las hojas de tu libro de origen para luego copiarlas. te pongo un ejemplo
La variable hoja representa cada hoja de tu libro.
For Each hoja In ThisWorkbook.Worksheets
MsgBox hoja.Name
Next hoja
hola buen dia, quisiera preguntarte si es posible utilizar esta misma macro con archivos que Esten ubicados en diferentes carpetas? habria que colocar todas las rutas ? como se podria lograr esto?
Tendrias que hacer el mismo proceso para cada carpeta.
donde puedo agregar el codigo en VBA para que copie y pegue en valores
Muchísimas gracias, fue muy ilustrativo y funciona perfecto. Sin embargo quisiera hacerte una consulta:si quisiera que copiara archivos cuyo nombre tenga un pedazo de cadena específico? por ejemplo, todos empiecen por una palabra pero los quiero agrupar en una hoja por el nombre de la ciudad(segunda parte de la cadena), tienes algún archivo que complemente esta idea?
Hola, en esta linea de código puedes modificar
Archivos = DIR(Ruta & "*.xlsx")
Si quieres que tome los archivos con una palabra especifica, por ejemplo total, ese texto deberías colocarlo antes del símbolo *. de esta manera.
Archivos = DIR(Ruta & "total*.xlsx")
saludos
Muchas gracias, sabrás cómo puedo hacerle para pegarlo como valor?, es que mi libro tiene fórmulas y me gustaría que apareciera como valor
Muchas gracias por el aporte, me queda una duda, me funciona siempre con archivos xlsx, uso también xls y cambie la extensión en el código, funciona hasta 70mil registros de ahí...interpreta que la fila destino vuelve a ser 2, que crees que sea?
xls solo soporta 65 mil registros.
@@maihuire11 muchas gracias, aprovecho para comentarte que el archivo donde queda el consolidado es xlsm, por lo tanto logré resolverlo haciendo que ufila sea igual a la fila de la celda activa después de desplazarme totalmente hacia abajo y sumando uno. Así sí me permitió quitar ese impedimento
Mis planillas poseen mas de una hoja ¿Cómo haría en ese caso?
Buenas, lo he intentado y al ejecutarlo, aparece el mensaje siguiente "Error de compilación - Loop sin Do"
He puesto Do antes y después de Loop y nada, sigue dando el mismo error. Parece un error de órdenes.
Amigo excelente video y bastante clara la explicacion.
La verdad muy completo el tutorial🤘
El siguiente mensaje es por una duda que manejo que seria la siguiente, es posible realizar exactamente la misma macro pero en vez de que obtenga todos los archivos de una carpeta en especifico que obtenga un archivo que yo elija desde el explorador de archivos.
Esto con la idea de que uno escoja cada archivo a cargar en la BD de excel.
Saludos!
🤟
Sub ImportarDatos()
Dim wsHojaDestino As Worksheet
Dim Ruta As String
Dim wbLibroOrigen As Workbook
Dim uFilaOrigen As Long
Dim uFilaDestino As Long
Application.ScreenUpdating = False
Set wsHojaDestino = ThisWorkbook.Worksheets("Hoja1")
Ruta = Application.GetOpenFilename(Title:="Por favor seleccione un libro")
If Ruta = "False" Then
Exit Sub
End If
Set wbLibroOrigen = Workbooks.Open(Ruta)
uFilaOrigen = wbLibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
If uFilaDestino > 1 Then
wbLibroOrigen.Worksheets(1).Range("A2:F" & uFilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & uFilaDestino)
End If
wbLibroOrigen.Close SaveChanges:=False
MsgBox "Libros importados correctamente!", vbInformation, "Hoja1"
Application.ScreenUpdating = True
End Sub
Si tengo 2 tablas independientes una al lado de la otra en la misma hoja, sería posible hacer que esta macro me consolide información de otros libro tomando en cuenta que tienen el mismo formato desde 2 tablas y me pegue la información correspondiente a cada tabla.
Quedo atento.
Hola! Me marca error cuando meto archivos=dir(ruta & “*.xlsx”) 😢
Explicas super bien, pero solo me funciono una vez, la volvi a ejecutar y no aparece nada de información pero no me sale error. ¿a qué se puede deber?
lo que para es que necesito en el momento es copiar varias hojas que tienen imagenes pero estan en un solo libro, y no he podido personalizar la macro para que me lleve las imagenes
Muchas gracias pero cuando corro la macro no me copia nada 🥲 y está todo tal cual , claro con las modificaciones pertinentes según archivo
Hola, algo estas haciendo mal que no te copia. En la columna A tienes datos?
@@maihuire11 Me pasa el mismo problema y tengo datos en el libro origen con las cabeceras identidas pero no copia datos
hola, tengo una consulta si necesito rescatar un dato en especifico de cada libro como lo puedo hacer he tratado colocando condiciones pero no me funciona
Hola, puedes hacerlo con condiciones if else.
@@maihuire11 tienes algún tutorial donde lo hagas haber si puedo combinarlo
A que te refieres con condiciones, yo tambien quiero hacer unas unificaciones especificas.
@@harlesepc5906 Es muy extenso explicarlo en un comentario. En la descripción del video sale mi fanpage. Saludos
@@maihuire11 Condiciones con respecto al IF, ELSE.. lo manejado solo queria saber que cuando mencionabas condiciones. cuales eran esas condiciones o ese requerimiento. ?
Hola muy bueno el tutorial me ayudo muchisimo!! sólo tengo una duda, cunado en las hojas a copiar tengo unas columnas con validación de datos (listas), me salta un error y me deja el archivo consolidado dañado, como puedo solucionarlo?
Hola, deberías copiar solo valores.
@@maihuire11 muchas gracias!!
Buena tarde, pudiste resolver esto?? Tambien ando buscando una respuesta. Saludos.
Y la macro donde esta
Saludo.. porque me marca erro 52 en mi laptop gracias saludos
Hola, me gustaría ayuda estoy intentando unir y copiar de varios archivos en 1 pero me esta dando Error 52 y realmente no se que cual prodira s e r el problema. Me podrían ayudar ?
Hola, tienes que darle clic en depurar y ver qué código está resaltandose. Con eso puedes tener más pistas de que error es.
Hola buenos días tengo un problema la macro se salta algunos libros como puedo hacer ahy ?
Hola, quizas alguno de tus otros libros no tenga la extensión xlsx si no xls
Buenos días, ¿Funciona cuando el archivo principal no esta limpio? Es decir, si consolido 1 vez, y luego necesito anexar nuevos archivos ¿funciona?
En este caso la macro limpia el contenido anterior y vuelve a cargar nuevamente los datos. Eso es porque hay en una linea el código que dice .clearcontents. Si quieres que no lo borre y se siga agregando borra esa línea de código. Fijate en el minuto 20:28
Saludos
@@maihuire11 Ok, voy a mirar, exactamente es lo que quiero porque debo estar sumandole archivos diariamente, el primer dia si me sirve tal cual como la tienes ahi pero ya los siguientes dias no.
@@ancestro071 por eso quítale la línea que te indique y ya no borrará los días anteriores.
Saludos
Estimado buenas noches, muy bueno el tutorial, pero tengo dos preguntas
1- tengo un campo fechas en un archivo csv de la forma 01/11/2022 (original) pero los importa como 11/01/2022 y cambia el formato de la celda a fecha, sin embargo cuando la fecha pasa a 13/11/2022 lo deja asi y el fomrato de la celda esta en general..
2-Como hago para eliminar toda la fila en el erchivo origen que contenga un determinado caracter en en una fila y columna cualquiera.
Te agradeceria me puedas ayudar
Hola, acabo de solucionar el 2 punto.
En cuanto al primero aun, aclarar que en la hoja de consolidado todas las celdas estan en formato general.
Espero puedas darme una ayuda
quisiera hacer el mismo proceso, pero en lugar de agregar filas, quisiera agregar columnas
cambias el codigo la parte que dice ROWS (filas) a columns y marcas tu delimitación.
Yo creé el mismo archivo pero de una tabla dinámica, el problema es que no se cómo hacerle para que me pegue valores a la hora de importarlo y no las formulas
Hola, te doy un ejemplo simple:
Los valores con formulas están en la celda A1 y lo estoy pegando a B1 solo valores.
Range("A1").Copy
Range("B1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Guíate de esto y adaptalo a tu desarrollo.
Saludos
Muchísimas gracias por este aporte, me funciono perfectamente, aunque tengo una duda, como podría hacer para que al importar documentos de texto me los delimite automáticamente por comas?
Selection.TextToColumns Destination:=Range("rango de seleccion"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
Con este codigo de arriba podras delimitar el texto que tengas seleccionado por coma, lo unico que tienes que hacer es establecer el rango en el destino
COMO HAGO SI SON VARIAS HOJAS? NECESITO ME COPIE LOS DATOS DE VARIAS A UNA SOLA HOJA CUANDO TENGAN ALGUNAS DE LAS DOS VARIABLES EN ESA CELDA. AL TENERLA ESOS DATOS SE PASEN A UNA SOLA HOJA. ESTAMOS HABLANDO QUE ESOS DATOS SE ESCRIBEN EN LINEA DE AL MENOS 100 HOJAS DENTRO DEL ARCHIVO DE EXCEL.
SE PUEDE?
Hola si es posible, este tutorial es para una sola hoja.
@@maihuire11 tu lo harías? Me puedes dar un correo a ver cuanto me cobras por hacerlo
@@josefiguera4868 Hola escribeme x mi fanpage que esta en la descripción del video.
hola excelente video.... tengo una pregunta en esta linea ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1 me aparece el siguiente error : " error 91 variable de objeto o bloque with no establecido....... que podra ser??
de antemano muchas gracias por la ayuda
Hola, ese error ocurre porque no asigaste una hoja a la variable wsHojaDestino. Debes colocar este codigo al inicio.
Set wsHojaestino=Thisworkbook.Worksheets("Consolidado")
@@maihuire11 hola... mil gracias por responder, revisando veo que si tiengo la linea que dices y bueno no se que pasa...
te voy a dejar el codigo completo y tu me diras si hay algo mal...
Sub consolidar()
Dim wsHojaDestino As Worksheet
Dim Ruta, Archivos As String
Dim wblibroOrigen As Workbook
Dim ufilaOrigen As Long
Dim ufiladestino As Long
Set wshojasdestino = ThisWorkbook.Worksheets("consolidado")
Ruta = ThisWorkbook.Path & "\files\"
Archivos = Dir(Ruta & "*.xlsx")
Do While Len(Archivos) > 0
Set wblibroOrigen = Workbooks.Open(Ruta & Archivos)
ufilaOrigen = wblibroOrigen.Worksheets(2).Range("A" & Rows.Count).End(xlUp).Row
ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
wblibroOrigen.Worksheets(1).Range("A2:BJ" & ufilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & ufiladestino)
wblibroOrigen.Close savechanges:=False
Archivos = Dir()
Loop
MsgBox "libros importados correctamente", vbInformation, "Consoloidado"
End Sub
nuevamente te agradezco inmensamente tu ayuda...
@@vichoaven el error que tienes es de la variable: la declaras como wsHojaDestino y la usas como wshojasdestino (tiene una letra "s" de más)
Esta linea "Set wshojasdestino = ThisWorkbook.Worksheets("consolidado")" deberia quedar así:
Set wsHojaDestino = ThisWorkbook.Worksheets("consolidado")
@@maihuire11 excelente... muchisimas gracias ya se me quito ese error... ahora lo único es que no me esta copiando toda la información solo me copia la info de las 3 primeras columnas pero tengo info hasta la columna BJ y nada.
@@vichoaven Hola, en tu codigo veo que si incluyes hasta BJ, asegurate que este tomando la hoja indicada. Saludos
Amigo me sale error 9 en la línea de ser wsHojadestino, a qué se deberá?
Hola, debes declarar esa hoja como worksheet
@@maihuire11 hola me sale igual no puedo resolverlo te dejo el codigo
Sub ImportarDatos()
Dim wsHojaDestino As Worksheet
Dim Ruta, Archivos As String
Dim wbLibroOrigen As Workbook
Dim uFilaOrigen As Long
Dim uFilaDestino As Long
Application.ScreenUpdating = False
Set wsHojaDestino = ThisWorkbook.Worksheets("Consolidado")
Ruta = ThisWorkbook.Path & "\Files\"
Archivos = Dir(Ruta & "*.xlsx")
Do While Len(Archivos) > 0
Set wbLibroOrigen = Workbooks.Open(Ruta & Archivos)
uFilaOrigen = wbLibroOrigen.Worksheets(11).Range("A" & Rows.Count).End(xlUp).Row
uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
wbLibroOrigen.Worksheets(11).Range("A2:N" & uFilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & uFilaDestino)
wbLibroOrigen.Close Savechanges:=False
Archivos = Dir()
Loop
MsgBox "Libros importados Correctamente", vbInformation, "Consolidado"
Application.ScreenUpdating = True
End Sub
@@ricardofalconi166 Tu hoja destino debe estar en el libro abierto.
@@maihuire11 esta abierto la hoja pero ahora me sale el error en uFillaOrigen uFilaOrigen = wbLibroOrigen.Worksheets(11).Range("A" & Rows.Count).End(xlUp).Row
@@ricardofalconi166 Debes indicar que tipo de error, veo que haces referencia a tu hoja 11. Realmente tienes una hoja en la posición 11?
Muy buena aportación. Más como UD. Fíjese que apliqué este ejemplo pero como mi hoja origen lleva fórmulas me marca error y aparece "la palabra destino ya existe blah blah blah"
Help!!!
Crea tu hoja con otro nombre que no sea destino.
buenos días, gracias por el video, estoy intentando hacer la macro, pero en esta linea me sale depurar, me podrias decir por favor porque se debe ese error?
archivos = Dir(Ruta & "*.xlsm")
Hola, el problema podria ser tu variable Ruta, fijate que la ruta que le estas asignando lineas arriba sea la correcta. Igual tambien dime que mensaje de error te sale en la ventana depurar.
@@maihuire11 igual me sale, dice que archivo no existe
@@conciertosquenodebesperder hola es x q el archivo no existe o porque la ruta esta mal escrita.
Hola, me pasa lo mismo. -¿Lo pudiste arreglar? ¿Cómo?. Gracias
Hola, yo también tuve el mismo problema y puede ser porque los archivos estan en algun drive o nube. En este caso te trae la ruta con una dirección http asociada y la macro no reconoce eso. Para solucionarlo es mejor poner los archivos en una carpeta local del computador y ahí no pone problema.
excelente macro.
como hago para descargarla
Hola estoy intentando realizar la programación, pero sale error 52. dice nombre o numero de archivo incorrecto. Que puede ser?
Mira este es mi codigo, sobre la ubicacion esta como lo indicas, pero diferentes nombres de archivo de excel. Agradezco tu ayuda.
Sub ImportarDatos()
Dim wsHojaDestino As Worksheet
Dim Ruta, Archivos As String
Dim wbLibroOrigen As Workbook
Dim uFilaOrigen As Long
Dim uFilaDestino As Long
Application.ScreenUpdating = False
Set wsHojaDestino = ThisWorkbook.Worksheets("Consolidado")
wsHojaDestino.Range("A2:AK" & wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1).ClearContents
Ruta = ThisWorkbook.Path & "\file\"
Archivos = Dir(Ruta & "*.xlsx")
Do While Len(Archivos) > 0
Set wbLibroOrigen = Workbooks.Open(Ruta & Archivos)
uFilaOrigen = wbLibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
uFilaDestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
wbLibroOrigen.Worksheets(1).Range("a2:A" & uFilaOrigen).Value = Archivos
If uFilaOrigen > 1 Then
wbLibroOrigen.Worksheets(1).Range("A2:Z" & uFilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & uFilaDestino)
End If
wbLibroOrigen.Close SaveChanges:=False
Archivos = Dir()
Loop
MsgBox "Libros importados correctamente", vblnformation, "Consolidado"
Application.ScreenUpdating = True
End Sub
te felicito x el video una consulta.
ya hice todo el codigo pero no me pega el encabezado del 1 libro.
este es el codigo:
Sub consolidar()
Dim wsHojaDestino As Worksheet
Dim Ruta, Archivos As String
Dim wblibroOrigen As Workbook
Dim ufilaOrigen As Long
Dim ufiladestino As Long
Set wsHojaDestino = ThisWorkbook.Worksheets("datos")
Ruta = ThisWorkbook.Path & "\files\"
Archivos = Dir(Ruta & "*.xlsx")
Do While Len(Archivos) > 0
Set wblibroOrigen = Workbooks.Open(Ruta & Archivos)
ufilaOrigen = wblibroOrigen.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Row
ufiladestino = wsHojaDestino.Range("A" & Rows.Count).End(xlUp).Row + 1
wblibroOrigen.Worksheets(1).Range("A2:U" & ufilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & ufiladestino)
wblibroOrigen.Close savechanges:=False
Archivos = Dir()
Loop
MsgBox "libros importados correctamente", vbInformation, "Datos"
End Sub
Hola la cabecera de tuarchivo de origen posiblemente este en la fila 2:
Aqui en tu codigo se indica eso en "A2....
wblibroOrigen.Worksheets(1).Range("A2:U" & ufilaOrigen).Copy Destination:=wsHojaDestino.Range("A" & ufiladestino)