VBA Excel - Macro para crear carpetas en Excel

16 jul 2020

VBA Excel - Macro para crear carpetas en Excel


En muchas ocasiones cuando trabajamos con macros tenemos la necesidad de crear carpetas para automatizar nuestras labores, y hoy te voy a explicar como realizar esa macro. 

Macro para crear carpetas en Excel

A continuación les explicare como realizarlo:
 
1. Abrir el editor Visual Basic para Aplicaciones (VBA). 

2. En la cinta de opciones en el menú Insertar… módulo 

3. Dentro del módulo: 

 A) Creamos el nombre de nuestra macro:

 
Sub Crear_Carpeta()

B) Creamos el objeto Scripting.FileSystemObject que nos proporciona acceso al sistema de archivos del ordenador que le permite crear, eliminar, editar y copiar los archivos / carpetas

Set fs = CreateObject("Scripting.FileSystemObject") 

C) Con Application.FileDialog(msoFileDialogFolderPicker) mostramos el cuadro de dialogo que nos va ayudar a seleccionar la ruta donde se creara nuestra carpeta
  
With Application.FileDialog(msoFileDialogFolderPicker)

D) Evaluamos si se selecciono una carpeta con un if
   
If .Show = -1 Then

E) Si se selecciono una carpeta guardamos la ruta en una variable "Ruta"
   
Ruta = .SelectedItems(1)

F) Si no se selecciono una carpeta, terminamos la macro
   
Else
Exit Sub

G) Cerramos nuestro if
  
End If
End With

H) con la función InputBox, solicitamos el nombre de la carpeta
  
Nombre = Application.InputBox("introduce el nombre de la carpeta")

I) con CreateFolder creamos una nueva carpeta en la ruta que se selecciono anteriormente
  
fs.CreateFolder Ruta & "\" & Nombre

J) Cerramos nuestra macro.
   
End Sub

4. Al final nuestra macro va a quedar de la siguiente manera:
   
Sub Crear_Carpeta()

Set fs = CreateObject("Scripting.FileSystemObject") '

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
Ruta = .SelectedItems(1)
Else
Exit Sub
End If
End With

Nombre = Application.InputBox("introduce el nombre de la carpeta")

fs.CreateFolder Ruta & "\" & Nombre

End Sub

3 comentarios :

  1. Hola necesito ayuda con un macro para excel. Tengo un listado de 1500 trabajadores con sus fichas cédulas
    Posgrados etc y necesito crear carpetas de cada uno con sus documentos y la carpeta de cada se debera llamar "23453_Juan Jose JJ" ejemplo y ahí en esa carpeta tener todos sus documentos GRACIAS

    ResponderBorrar
    Respuestas
    1. Hola si gustas puedes contactarme por whatsapp https://api.whatsapp.com/send?phone=525584553535

      Borrar
  2. Buenos dias, consulta puedo a la vez de crear las carpetas puedo copiar un archivo xlsx por cada cliente qie ingreso, yo tengo la macro que crea las carpetas pero no doy con copiar el archivo que es el mismo para cada acrpeta que creo.
    Sub crear_Carpestas()
    Dim i As Integer
    i = 0
    Ruta = "G:\Carpetas Clientes"
    Range("A2").Select
    On Error Resume Next
    Do While ActiveCell.Value <> ""
    i = i + 1
    MkDir (Ruta & "/" & ActiveCell.Value)
    ActiveCell.Offset(1, 0).Select
    Loop
    MsgBox ("Se crearon las carpetas con Exito")
    End Sub

    ResponderBorrar