¿Hay algún modo para que el excel detecte el nombre de las carpetas de una ruta?

Me gustaría saber si hay algún modo que excel sea capaz de hacer un listado con el nombre de las carpetas de manera automática.

Resulta que tengo carpetas en mi pc que luego que de introducir en el excel, hay veces que se olvida introducir alguna carpeta. La idea es ahorrarme este paso y solo con crear la carpeta el excel ya sepa cuantas carpetas hay y como se llaman.

La idea en un futuro (si esto se pudiera hacer) seria que excel detectara el nombre de las carpetas que hay y yo cuando vaya introduciendo los datos (el nombre de la carpeta es el dato introducido) detecte si me he olvidado alguno, ds decir, que si no he pasado alguna carpeta en la base de datos que me salga un msgbox o algo que me advierta que faltan POR carpetas para introducir.

La intención de hacer esto es evitar errores humanos y tener la certeza que se han introducido el 100% de los datos.

1 Respuesta

Respuesta
2

La siguiente macro crea un listado con el nombre de las carpetas. Como no indicas dónde querrás ese listado asumo que quedará en la hoja activa a partir de celda B2.

Sub listarSubcarpetas()
'x Elsamatilde
'Macro extraída del manual 500Macros, capitulo: Trabajando con directorios
Dim fs, carpeta, subcarpeta
Dim ruta As String, filx As Long
Set fs = CreateObject("Scripting.FileSystemObject")
'la ruta de la carpeta principal se obtiene de la celda A1 (SIN BARRAS)
ruta = "C:\Users\elsam\Downloads\AL_TRABAJO"
'fila donde empezará la lista de subcarpetas obtenidas
filx = 2
'contempla posible error de ruta no hallada
On Error GoTo sinRuta
Set carpeta = fs.GetFolder(ruta)
'se buscan las subcarpetas de la ruta solicitada
For Each subcarpeta In carpeta.SubFolders
    Range("B" & filx) = subcarpeta.Name
    filx = filx + 1
Next
Exit Sub
sinRuta:
 MsgBox "No se encontró la ruta asignada"
End Sub

Para indicarle la carpeta o ruta donde mirar, tenés varias opciones: 

- dejar la ruta escrita en el mismo código (ver línea ruta = "C.....)

- dejar la ruta en alguna celda, por ej A1 de la hoja activa. En ese caso la instrucción será así: ruta = [A1]

- la ruta será la del libro activo, en ese caso: ruta = thisworkbook.path

Te recuerdo que la consulta sigue en mi lista de 'pendientes de respuesta' . Solicita aclaraciones (si aún no la tenés resuelta) o valora para darla por cerrada.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas