Saltar al contenidoIr al contenido
Cómo crear varias carpetas con una macro en Excel VBA
Organización

Cómo crear varias carpetas con una macro en Excel VBA

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ódigoFunción
nombreClienteGuarda el nombre del cliente o carpeta principal
rutaClienteGuarda la ruta completa donde se creará la carpeta del cliente
contabilidadGuarda la ruta de la carpeta Contabilidad
declaracionesGuarda la ruta de la carpeta Declaraciones
xmlGuarda la ruta de la carpeta XML
CrearCarpetaCrea 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

  1. Abrir el editor de VBA.
  2. Crear o reutilizar una macro para crear carpetas.
  3. Agregar el parámetro ruta As String.
  4. Crear un nuevo módulo.
  5. Declarar las variables del cliente y las carpetas.
  6. Asignar el nombre del cliente.
  7. Crear la ruta principal del cliente.
  8. Crear las rutas de las carpetas internas.
  9. Llamar a la macro CrearCarpeta para cada ruta.
  10. Ejecutar la macro con F5.

Resumen de la estructura creada

CarpetaUbicaciónUso
Cliente 3Dentro de la carpeta madreCarpeta principal del cliente
ContabilidadDentro de Cliente 3Guardar archivos contables
DeclaracionesDentro de Cliente 3Guardar documentos de declaraciones
XMLDentro de Cliente 3Guardar 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.

Compartir
Escrito por
Deybi Diaz
Soy un joven dominicano dedicado a la creación de páginas web, con un proyecto de vida claro y una visión enfocada en el crecimiento, la disciplina y el trabajo constante. Me esfuerzo cada día...

Deja un comentario