Crear carpeta por medio de código vb en excel

Expertos solicito de su ayuda tengo un código el el cual me guarda archivos PDF con el nombre especificado en una celda, me gustaría saber si existe la manera que me cree una carpeta con el nombre especificado en una celda y este a su vez lo considere para grabar los archivos.
El código es el Siguiente
Sub PDF_Printers_Loteo_Bri()
Sheets("REM-A").Select
Call PrintPDF
End Sub
Sub PrintPDF()
Application.ScreenUpdating = False
'Para Crear archivos PDF Desde Excel nada mas tienes que instalar el complemeto para guardar archivos pdf de Oficce
Dim nombre As String
XName = Range("M1").Value
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C\Escritorio\" & XName & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Application.ScreenUpdating = True
End Sub
Espero me puedan ayudar.
Ejemplo el nombre de "M1" REM-XST-0001
Y el nombre de la carpeta que quiero que me cree esta en "M2" es la Fecha en este Formato "010110".

1 respuesta

Respuesta
1
Haz lo siguiente
Sub Crear_carpetas()
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'llamamos al objeto FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
'pasamos a una variable, la ruta donde se encuentra el
'fichero de excel donde se está ejecutando este código
ruta = ActiveWorkbook.Path
'seleccionamos la primera celda que contiene
'los nombres de las carpetas (suponemos que es A4)
Range("A4").Select
'recorremos toda la columna, hasta que encuentre una fila vacía, y
'por cada fila con texto, crearemos una carpeta con el nombre
'de ese mismo texto
Do While Not IsEmpty(ActiveCell)
'si el fichero no existe, entonces lo creamos
If Not fso.FolderExists(ruta & "\" & ActiveCell.Value) Then
fso.CreateFolder (ruta & "\" & ActiveCell.Value)
End If
'pasamos a la fila siguiente, y volvemos a recorrer el bucle
ActiveCell.Offset(1, 0).Select
Loop
'limpiamos el objeto
Set fso = Nothing
'Mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
Las limitaciones son dos:
1.- Los nombres que tengamos en la hoja de excel, deben estar de forma continua, es decir, sin filas en blanco entre ellos.
2.- Las carpetas se crean en el mismo directorio donde se encuentre el fichero donde vas a ejecutar el macro, por lo que deberás tenerlo previamente guardado en tu ordenador, ya sea en tu carpeta de Mis Documentos, o donde desees. Será en ese directorio donde se creen esas nuevas carpetas.
Ok Gracias ya probé el código y me funciona correcto.
1.- Ahora necesito especificarle una ruta. Ejemplo 198.250.205.16\ Mesa de operaciones... en que parte del código se modifica.
2.- En que parte de mi código agrego este para que me considere el directorio que es creado para que guarde mis archivos.
Gracias.
La variable ruta obtiene su valor del ActiveWorkbook. Path así que podrías darle la ruta e esa parte y no que la obtenga del path del archivo excel. Ejemplo
ruta="c:\carpeta\" o
ruta= \\192.168.0.13\carpeta\
Ok Gracias. Excelente respuesta y la atención ni se diga.
En el Código que sigue es el que ocupo para que me guarde el archivo en formato PDF ¿en qué parte de este aplicaría el código? Que amablemente me has pasado. Esto con el fin que mis archivos sean grabados en la carpeta que ya hice por medio del código que me pasaste.
Sub PrintPDF()
Application.ScreenUpdating = False
'Para Crear archivos PDF Desde Excel nada mas tienes que instalar el complemeto para guardar archivos pdf de Oficce
Dim nombre As String
XName = Range("M1").Value
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C\Escritorio\" & XName & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Application.ScreenUpdating = True
End Sub
El código es una subrutina nueva y el llamado a la subrutina la puedes incorporar antes de la linea
XName=Range("M1).value
por lo que quedaría así
call Crear_carpetas
XName=Range("M1).value
y el código completo va después del end sub de tu rutina PrintPDF
Gracias. En su totalidad no supe aplicarlo pero pude crear carpetas eso si., estoy haciendo pruebas para lograr mi objetivo.
Excelente respuesta y actitud

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas