Hola, ¿se podria hacer para que buscarta tambien los archivos contenidos dentro de las subcarpetas? Creo que ya lo han preguntado, pero no veo la respuesta
Hola, muchas gracias por tu comentario. Para obtener el tamaño del archivo y la fecha de modificación solo agrega el siguiente código: Range("b" & r).Value = FileLen(a) Range("c" & r).Value = FileDateTime(a) Esto lo escribes justo debajo del código que obtiene el nombre del archivo minuto 05:22 Saludos y seguimos en contacto.
Gracias amigo por el aporte. sin embargo e seguido paso a paso lo q tu haces pero simplemente no hace nada. me podrias ayudar con mi posible error. Seria util obtener la lista de los archivos pero sin la ruta o a su la ruta pero tambien el nombre del archivo. Gracias amigo
Hola, para obtener la lista de archivos sin la ruta solo escribe Range("a" & r).Value = a.Name Para obtener solo la ruta seleccionada, según el código se guarda en la variable D Range("a" & r).Value = D Me puedes indicar el mensaje de error por favor? Saludos!
Comente la línea Application.FileDialog(msoFileDialogFolderPicker).Show y a la variable D asigne la ruta donde buscará los archivos Ejemplo: 'Application.FileDialog(msoFileDialogFolderPicker).Show
D = "C:\Test" 'Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
la variable "a" va tomando cada elemento del arreglo f.files... es decir si f.files tiene 4 archivos, el foreach asignará a la variable "a" el primer elemento de f.files, y después el segundo y así sucesivamente
Buenas noches. Excelente lo de esta macros. Me funciona a la perfección. Ahora bien, junto a esta macros, necesito aplicar la formula BUSCARV dentro de la misma hoja pero buscando datos en otra hoja. Esa otra hoja necesito que esté en uno de los archivos, según los archivos listados con la macros de listar archivos. Por favor y muchas gracias.
Hola buenas tardes, será que podamos hacer esa macro limitando que solo muestre la ruta de un tipo de archivo es decir que en la carpeta solo me traiga la ruta de los archivos que sean por ejemplo .xml
Muchas gracias!!! Lo intenté de diferentes maneras y no lograba. Gracias por compartir la macro, sólo así pude hacerlo fácilmente. Hay alguna manera de sólo copiar el nombre de archivo sin la dirección de ubicación?. Muy agradecido por tu ayuda!
En la línea Range("a" & r).Value = D & "\" & a.Name cambiarlo por 'Con esto verás solo los archivos listados (sin la ruta) Range("a" & r).Value = a.Name Saludos y gracias por tus comentarios!
Hola y muchas gracias, es justo lo que necesitaba, aun así me da error si cancelo en el cuadro de selección de directorio, como lo podría corregir, para que mostrara un mensaje como "No se ha seleccionado un directorio" en ver de este error: "Se ha producido error '5' en tiempo de ejecución..."
Hola, claro que si.... Agrega esta linea abajo de "Application.FileDialog(msoFileDialogFolderPicker).Show" If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub El código debería quedar así: Sub Lector() Hoja1.Select Range("A2:a1048576").ClearContents Dim D As String Application.FileDialog(msoFileDialogFolderPicker).Show 'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa... If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) Set fs = CreateObject("Scripting.Filesystemobject") Set f = fs.getfolder(D)
r = 2
For Each a In f.Files If Not Right(a.Name, 4) = ".ini" Then Range("a" & r).Value = D & "\" & a.Name r = r + 1 End If
No me funciona bien, me da el mensaje todo el rato, lo he solucionado (de manera cutre) con un "if" y un "else" y una nueva variable, igual no es la manera mas limpia, pero me funciona, dime si se puede repara lo que me has pasado, para que me funcione. Gracias :D Así lo he dejado :P Sub Lector() Hoja1.Select Range("A2:A1048576").ClearContents Dim D As String Dim E As String E = 0 Application.FileDialog(msoFileDialogFolderPicker).Show 'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa... 'If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub On Error GoTo Fin D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) Set fs = CreateObject("Scripting.Filesystemobject") Set f = fs.getfolder(D)
r = 2
For Each a In f.Files If Not Right(a.Name, 4) = ".ini" Then Range("a" & r).Value = D & "\" & a.Name r = r + 1 End If Next a MsgBox "¡Directorio Actualizado!", vbInformation E = 1 Fin: If E = 0 Then MsgBox "Se canceló la actualización del directorio.", vbCritical Else End If End Sub
Vale, creo que así está mejor: (¿Lo mejorarías?) Sub Lector() Hoja1.Select Range("A2:A1048576").ClearContents Dim D As String Application.FileDialog(msoFileDialogFolderPicker).Show 'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa... On Error GoTo Fin D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1) Set fs = CreateObject("Scripting.Filesystemobject") Set f = fs.getfolder(D)
r = 2
For Each a In f.Files If Not Right(a.Name, 4) = ".ini" Then Range("a" & r).Value = D & "\" & a.Name r = r + 1 End If Next a MsgBox "¡Directorio Actualizado!", vbInformation Exit Sub Fin: MsgBox "No se ha seleccionado ninguna carpeta.", vbCritical End Sub
Esa es otra manera, pero recuerda limpiar la variable "D", ya que en algunas ocasiones se queda el valor que corriste anteriormente.... Solo agregar D = "" después del MsgBox "No se ha seleccionado ninguna carpeta.", vbCritical + vbOkOnly También puedes agregar al tipo de mensaje vbCritical + vbOkOnly para que sea el único botón a presionar.... Saludos
buenas muy pero muy bueno el video eso para organizar y hacer una lista de las carpetas esta buena pero si tu sabes como crear un archivador virtual me ayudarias un monton
Raul que crack, esta es mi macros como debria incorporalo? Sub Listaindice() Dim Indice As String Dim i As Integer Dim listado As String Indice = path Sheets("indicereporte").Select Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row) = "" i = 2 listado = Dir(Indice) Do While Len(listado) > 0 Sheets("indicereporte").Select Cells(i, 1) = listado listado = Dir() i = i + 1 Loop End Sub
Queda así! Sub Listaindice() Dim Indice As String Dim i As Integer Dim listado As String Indice = "C:\Users\correcj\Ecolab\Workflow Account Payable - Documentos\Invoices\All\*pdf" Sheets("indicereporte").Select Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row) = "" i = 2 listado = Dir(Indice) Do While Len(listado) > 0 Sheets("indicereporte").Select Cells(i, 1) = listado Cells(i, 2) = FileDateTime(Mid(Indice, 1, Len(Indice) - 1) & listado) listado = Dir() i = i + 1 Loop End Sub Saludos!!! Raúl Guerrero
excelente me sirvió ! No sabía como seleccionar la carpeta.
Hola, y si solo necesito los nombres de los subdirectorios que contienen la carpeta que se selecciona como se haría? :)
Hola, ¿se podria hacer para que buscarta tambien los archivos contenidos dentro de las subcarpetas? Creo que ya lo han preguntado, pero no veo la respuesta
Excelente video. Saludos desde Colombia
Usted puede unirse a mi canal, tengo una excelente propuesta
para mejorar sus habilidades:
th-cam.com/channels/wnx_b0C6UGB0vnKOLMfGeA.htmljoin
Excelente video, muchas gracias por el aporte. Crees que se pueda sacar caracteristicas de los archivos como fecha modificación, tamaño, etc?
Hola, muchas gracias por tu comentario. Para obtener el tamaño del archivo y la fecha de modificación solo agrega el siguiente código:
Range("b" & r).Value = FileLen(a)
Range("c" & r).Value = FileDateTime(a)
Esto lo escribes justo debajo del código que obtiene el nombre del archivo minuto 05:22
Saludos y seguimos en contacto.
Excelente Macro. Me podía indicar la instrucción a añadir para que las subcarpetas aparecieran con sus archivos correspondientes. Gracias.
Usted puede unirse a mi canal, tengo una excelente propuesta
para mejorar sus habilidades:
th-cam.com/channels/wnx_b0C6UGB0vnKOLMfGeA.htmljoin
Gracias amigo por el aporte. sin embargo e seguido paso a paso lo q tu haces pero simplemente no hace nada. me podrias ayudar con mi posible error. Seria util obtener la lista de los archivos pero sin la ruta o a su la ruta pero tambien el nombre del archivo. Gracias amigo
Hola, para obtener la lista de archivos sin la ruta solo escribe
Range("a" & r).Value = a.Name
Para obtener solo la ruta seleccionada, según el código se guarda en la variable D
Range("a" & r).Value = D
Me puedes indicar el mensaje de error por favor?
Saludos!
@@RaduNordenhulk gracias amigo.
buen día, como le puedo hacer para quitarle seleccionar la carpeta y solo sea una sola
Comente la línea Application.FileDialog(msoFileDialogFolderPicker).Show
y a la variable D asigne la ruta donde buscará los archivos
Ejemplo:
'Application.FileDialog(msoFileDialogFolderPicker).Show
D = "C:\Test" 'Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
Hola excelente macro gracias, como puedo incluir subcarpetas????
Que funcion hace la a ?? dentro del for each ??
la variable "a" va tomando cada elemento del arreglo f.files... es decir si f.files tiene 4 archivos, el foreach asignará a la variable "a" el primer elemento de f.files, y después el segundo y así sucesivamente
Buenas noches. Excelente lo de esta macros. Me funciona a la perfección. Ahora bien, junto a esta macros, necesito aplicar la formula BUSCARV dentro de la misma hoja pero buscando datos en otra hoja. Esa otra hoja necesito que esté en uno de los archivos, según los archivos listados con la macros de listar archivos. Por favor y muchas gracias.
Gracias Jhonny, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=
Hola buenas tardes, será que podamos hacer esa macro limitando que solo muestre la ruta de un tipo de archivo es decir que en la carpeta solo me traiga la ruta de los archivos que sean por ejemplo .xml
Usted puede unirse a mi canal, tengo una excelente propuesta
para mejorar sus habilidades:
th-cam.com/channels/wnx_b0C6UGB0vnKOLMfGeA.htmljoin
Muchas gracias!!! Lo intenté de diferentes maneras y no lograba. Gracias por compartir la macro, sólo así pude hacerlo fácilmente. Hay alguna manera de sólo copiar el nombre de archivo sin la dirección de ubicación?. Muy agradecido por tu ayuda!
Hola, para obtener la lista de archivos sin la ruta solo escribe
Range("a" & r).Value = a.Name
Saldos!!! :)
¿Cuál sería el comando para eliminar la ruta completa del o los archivos, dejándolos son con la extensión?
Gracias
En la línea
Range("a" & r).Value = D & "\" & a.Name cambiarlo por
'Con esto verás solo los archivos listados (sin la ruta)
Range("a" & r).Value = a.Name
Saludos y gracias por tus comentarios!
EXCELENTE amigo que bueno!!!
Gracias Santiago, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=
Muy interesante, como se haria para solo pdfs mil gracias 🙏✍️
Usted puede unirse a mi canal, tengo una excelente propuesta
para mejorar sus habilidades:
th-cam.com/channels/wnx_b0C6UGB0vnKOLMfGeA.htmljoin
Hola y muchas gracias, es justo lo que necesitaba, aun así me da error si cancelo en el cuadro de selección de directorio, como lo podría corregir, para que mostrara un mensaje como "No se ha seleccionado un directorio" en ver de este error: "Se ha producido error '5' en tiempo de ejecución..."
Hola, claro que si....
Agrega esta linea abajo de "Application.FileDialog(msoFileDialogFolderPicker).Show"
If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub
El código debería quedar así:
Sub Lector()
Hoja1.Select
Range("A2:a1048576").ClearContents
Dim D As String
Application.FileDialog(msoFileDialogFolderPicker).Show
'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa...
If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub
D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
Set fs = CreateObject("Scripting.Filesystemobject")
Set f = fs.getfolder(D)
r = 2
For Each a In f.Files
If Not Right(a.Name, 4) = ".ini" Then
Range("a" & r).Value = D & "\" & a.Name
r = r + 1
End If
Next a
End Sub
No me funciona bien, me da el mensaje todo el rato, lo he solucionado (de manera cutre) con un "if" y un "else" y una nueva variable, igual no es la manera mas limpia, pero me funciona, dime si se puede repara lo que me has pasado, para que me funcione.
Gracias :D
Así lo he dejado :P
Sub Lector()
Hoja1.Select
Range("A2:A1048576").ClearContents
Dim D As String
Dim E As String
E = 0
Application.FileDialog(msoFileDialogFolderPicker).Show
'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa...
'If Len(D) = 0 Then MsgBox "No se ha seleccionado ninguna carpeta": Exit Sub
On Error GoTo Fin
D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
Set fs = CreateObject("Scripting.Filesystemobject")
Set f = fs.getfolder(D)
r = 2
For Each a In f.Files
If Not Right(a.Name, 4) = ".ini" Then
Range("a" & r).Value = D & "\" & a.Name
r = r + 1
End If
Next a
MsgBox "¡Directorio Actualizado!", vbInformation
E = 1
Fin:
If E = 0 Then
MsgBox "Se canceló la actualización del directorio.", vbCritical
Else
End If
End Sub
Vale, creo que así está mejor: (¿Lo mejorarías?)
Sub Lector()
Hoja1.Select
Range("A2:A1048576").ClearContents
Dim D As String
Application.FileDialog(msoFileDialogFolderPicker).Show
'Si no se selecciona ninguna carpeta entonces muestra mensaje y sale del programa...
On Error GoTo Fin
D = Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1)
Set fs = CreateObject("Scripting.Filesystemobject")
Set f = fs.getfolder(D)
r = 2
For Each a In f.Files
If Not Right(a.Name, 4) = ".ini" Then
Range("a" & r).Value = D & "\" & a.Name
r = r + 1
End If
Next a
MsgBox "¡Directorio Actualizado!", vbInformation
Exit Sub
Fin:
MsgBox "No se ha seleccionado ninguna carpeta.", vbCritical
End Sub
Esa es otra manera, pero recuerda limpiar la variable "D", ya que en algunas ocasiones se queda el valor que corriste anteriormente....
Solo agregar D = "" después del MsgBox "No se ha seleccionado ninguna carpeta.", vbCritical + vbOkOnly
También puedes agregar al tipo de mensaje vbCritical + vbOkOnly
para que sea el único botón a presionar....
Saludos
De acuerdo, muchas gracias.
buenas muy pero muy bueno el video eso para organizar y hacer una lista de las carpetas esta buena pero si tu sabes como crear un archivador virtual me ayudarias un monton
Excelente!!
gracias por tu ayuda con este video
Gracias Joreh, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=
Gracias, es de mucha ayuda, me funciona y luego se traba y me marca un erro 1004 o un letrero con una x y un 400
Gracias Gabyta, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=
buenisimo! gracias!
Gracias Martín, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=
hola como puedo obtener la fecha de creacion?
Hola, escribe
Range("c" & r).Value = FileDateTime(a)
Con esto deberías ver la fecha de creación del archivo!
Saludos!
Raúl Guerrero
Raul que crack, esta es mi macros como debria incorporalo?
Sub Listaindice()
Dim Indice As String
Dim i As Integer
Dim listado As String
Indice = path
Sheets("indicereporte").Select
Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row) = ""
i = 2
listado = Dir(Indice)
Do While Len(listado) > 0
Sheets("indicereporte").Select
Cells(i, 1) = listado
listado = Dir()
i = i + 1
Loop
End Sub
Agrega esta línea dentro de tu Do While
Cells(i, 2) = FileDateTime(Mid(Indice, 1, Len(Indice) - 1) & listado)
Queda así!
Sub Listaindice()
Dim Indice As String
Dim i As Integer
Dim listado As String
Indice = "C:\Users\correcj\Ecolab\Workflow Account Payable - Documentos\Invoices\All\*pdf"
Sheets("indicereporte").Select
Range("A2:A" & Cells(Rows.Count, 2).End(xlUp).Row) = ""
i = 2
listado = Dir(Indice)
Do While Len(listado) > 0
Sheets("indicereporte").Select
Cells(i, 1) = listado
Cells(i, 2) = FileDateTime(Mid(Indice, 1, Len(Indice) - 1) & listado)
listado = Dir()
i = i + 1
Loop
End Sub
Saludos!!!
Raúl Guerrero
me salio error 52 nombre de archivo incorrecto
Excelente solución....
Gracias H[ector, este curso gratuito en Udemy hasta el 31 de Diciembre 2019 le puede ser de utilidad!
th-cam.com/video/EXBDPg3Xk88/w-d-xo.html&lc=