Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En un artculo pasado creamos una macro para listar los archivos de una
carpeta y colocar sus nombres en las celdas de una columna de Excel. Sin
embargo es posible mejorar dicha macro para incluir todos los archivos
contenidos en las subcarpetas y eso ser precisamente lo que haremos en esta
ocasin.
El objeto FileSystemObject
Set fs = CreateObject("Scripting.FileSystemObject")
1 Sub Mostrar_Archivos(ruta)
2
3 'Seccin 1: Declaracin de variables y objetos
4 Dim fs, carpeta, archivo, subcarpeta As Object
5 Set fs = CreateObject("Scripting.FileSystemObject")
6
7 'Seccin 2: Ajustes necesarios a ruta
8 If ruta = "" Then
9 Exit Sub
10 ElseIf Right(ruta, 1) <> "" Then
11 ruta = ruta & ""
12 End If
13
14 'Seccin 3: Objeto Folder de la ruta indicada
15 On Error GoTo ErrHandler
16 Set carpeta = fs.GetFolder(ruta)
17
18 'Seccin 4: Obtener archivos del objeto Folder
19 For Each archivo In carpeta.Files
20 ActiveCell.Value = ruta & archivo.Name
21 ActiveCell.Offset(1, 0).Select
22 Next
23
24 'Seccin 5: Obtener subcarpetas del objeto Folder
25 For Each subcarpeta In carpeta.SubFolders
26 Mostrar_Archivos (subcarpeta)
27 Next
28
29 'Seccin 6: Auto-ajustar columnas y salir
30 ActiveCell.EntireColumn.AutoFit
31 Exit Sub
32
33 ErrHandler:
34 ActiveCell.Value = "Ruta inexistente"
35
36 End Sub
Probando la macro
Para iniciar la prueba debo seleccionar la celda donde deseo que se listen los
archivos ya que la macro comenzar a insertar los nombres a partir de la celda
activa. Posteriormente hago clic en el botn y se mostrar el cuadro de dilogo
solicitando la ruta de la carpeta.
Ingreso la ruta de la carpeta que contiene los archivos y al hacer clic en el
botn Aceptar se ejecutar la macro y obtendremos el siguiente resultado.