Crear una estructura compleja de carpetas con una macro en Excel VBA puede ser muy útil cuando necesitas organizar archivos de clientes, proyectos o documentos repetitivos.
Por ejemplo, si tienes una carpeta llamada Cliente 2 con carpetas internas como Contabilidad, Declaraciones y XML, puedes crear algo parecido para un nuevo cliente usando una macro.
La idea es reutilizar una macro anterior que ya permite crear una carpeta, pero ahora adaptarla para crear varias carpetas dentro de una carpeta principal.
Crear una macro base para crear carpetas
Primero se puede reutilizar una macro sencilla que permite crear una carpeta.
En este caso, la macro debe recibir un parámetro con la ruta donde se va a crear la carpeta.
Dentro de los paréntesis de la macro se escribe:
ruta As String
Esto significa que la macro recibirá una ruta como texto.
La estructura puede quedar de esta manera:
Sub CrearCarpeta(ruta As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(ruta) Then
fso.CreateFolder ruta
MsgBox "Se ha creado la carpeta"
End If
End Sub
Con esta macro base, puedes crear carpetas enviando la ruta como parámetro.
💡 Nota: esta macro usa Scripting.FileSystemObject, que permite trabajar con archivos y carpetas desde VBA.
Crear un nuevo módulo para varias carpetas
Después de tener la macro base, se puede crear un nuevo módulo para hacer la estructura completa.
La nueva macro puede llamarse:
CrearVariasCarpetas
Dentro de esta macro se declaran las variables necesarias para el nombre del cliente, la ruta del cliente y las carpetas que se van a crear.
Sub CrearVariasCarpetas()
Dim nombreCliente As String
Dim rutaCliente As String
Dim contabilidad As String
Dim declaraciones As String
Dim xml As String
End Sub
Declarar el nombre del cliente
Como este proceso se puede usar para crear carpetas de nuevos clientes, se declara una variable para guardar el nombre del cliente.
Por ejemplo:
nombreCliente = "Cliente 3"
Ese nombre se usará para crear la carpeta principal del nuevo cliente.
Crear la ruta del cliente
Después se necesita la ruta donde estará la carpeta del cliente.
La ruta principal debe apuntar a la carpeta madre donde se guardarán todos los clientes.
Un ejemplo sería:
rutaCliente = "C:\Clientes\" & nombreCliente & "\"
En este caso, la carpeta Cliente 3 se creará dentro de C:\Clientes\.
⚠️ Importante: cambia la ruta C:\Clientes\ por la ruta real donde quieres crear tus carpetas.
Crear las rutas de las carpetas internas
Luego se crean las rutas de las carpetas internas que estarán dentro del cliente.
Por ejemplo:
contabilidad = rutaCliente & "Contabilidad\"
declaraciones = rutaCliente & "Declaraciones\"
xml = rutaCliente & "XML\"
Estas variables guardan la ruta completa de cada carpeta.
Primero se usa la ruta del cliente y luego se agrega el nombre de cada carpeta interna.
Crear las carpetas usando la macro base
Cuando ya están listas las rutas, se llama a la macro CrearCarpeta varias veces.
Primero se crea la carpeta del cliente y luego las carpetas internas.
CrearCarpeta rutaCliente
CrearCarpeta contabilidad
CrearCarpeta declaraciones
CrearCarpeta xml
De esta forma, Excel VBA crea primero la carpeta principal y después crea las carpetas que van dentro.
Código completo para crear varias carpetas con VBA
El código completo puede quedar así:
Sub CrearCarpeta(ruta As String)
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FolderExists(ruta) Then
fso.CreateFolder ruta
MsgBox "Se ha creado la carpeta"
End If
End Sub
Sub CrearVariasCarpetas()
Dim nombreCliente As String
Dim rutaCliente As String
Dim contabilidad As String
Dim declaraciones As String
Dim xml As String
nombreCliente = "Cliente 3"
rutaCliente = "C:\Clientes\" & nombreCliente & "\"
contabilidad = rutaCliente & "Contabilidad\"
declaraciones = rutaCliente & "Declaraciones\"
xml = rutaCliente & "XML\"
CrearCarpeta rutaCliente
CrearCarpeta contabilidad
CrearCarpeta declaraciones
CrearCarpeta xml
End Sub
Qué hace cada parte del código
| Parte del código | Función |
|---|---|
| nombreCliente | Guarda el nombre del cliente o carpeta principal |
| rutaCliente | Guarda la ruta completa donde se creará la carpeta del cliente |
| contabilidad | Guarda la ruta de la carpeta Contabilidad |
| declaraciones | Guarda la ruta de la carpeta Declaraciones |
| xml | Guarda la ruta de la carpeta XML |
| CrearCarpeta | Crea cada carpeta usando la ruta recibida |
Ejecutar la macro
Después de escribir el código, puedes ejecutar la macro con F5 desde el editor de VBA.
Al ejecutarla, se crea la carpeta principal del cliente y también las carpetas internas.
En este ejemplo, se crea la carpeta Cliente 3 con esta estructura:
- Cliente 3
- Cliente 3 / Contabilidad
- Cliente 3 / Declaraciones
- Cliente 3 / XML
Evitar mensajes repetidos
Si no quieres que aparezca un mensaje cada vez que se crea una carpeta, puedes quitar o comentar esta línea:
MsgBox "Se ha creado la carpeta"
De esta forma, la macro creará las carpetas sin mostrar ventanas de confirmación.
Pasos para crear varias carpetas con una macro
- Abrir el editor de VBA.
- Crear o reutilizar una macro para crear carpetas.
- Agregar el parámetro ruta As String.
- Crear un nuevo módulo.
- Declarar las variables del cliente y las carpetas.
- Asignar el nombre del cliente.
- Crear la ruta principal del cliente.
- Crear las rutas de las carpetas internas.
- Llamar a la macro CrearCarpeta para cada ruta.
- Ejecutar la macro con F5.
Resumen de la estructura creada
| Carpeta | Ubicación | Uso |
|---|---|---|
| Cliente 3 | Dentro de la carpeta madre | Carpeta principal del cliente |
| Contabilidad | Dentro de Cliente 3 | Guardar archivos contables |
| Declaraciones | Dentro de Cliente 3 | Guardar documentos de declaraciones |
| XML | Dentro de Cliente 3 | Guardar archivos XML |
Conclusión
Con Excel VBA puedes crear una estructura compleja de carpetas usando una macro sencilla.
La clave está en crear una macro base que reciba una ruta como parámetro y luego llamar esa macro varias veces para crear la carpeta principal y sus carpetas internas.
Este método sirve para organizar carpetas de clientes, proyectos o cualquier estructura que necesites repetir con frecuencia.



