Autor Tema: Crear carpetas (sin recursividad)  (Leído 2593 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 213
Crear carpetas (sin recursividad)
« en: Enero 22, 2020, 12:47:34 am »
Palabras clave: crear, carpeta, directorio, ruta, WSH
Autor: theDBguy's
Extraído de: theDBguy's Access Blog

Dice DBguy:
Todos sabemos que podemos usar la función VBA MkDiR() para crear una carpeta o el método CreateFolder del File System Object (FSO) para hacer lo mismo. Sin embargo, ambos métodos sufren el mismo problema; es decir, solo pueden crear una carpeta de un nivel a la vez. Por ejemplo, el uso de MkDir ("C:\MyNewFolder") creará una carpeta llamada "MyNewFolder" en la carpeta raíz de la unidad C:. Al emitir el siguiente comando: MkDir ("C:\MyOtherFolder\MySubFolder") obtendrá un error de tiempo de ejecución "76: Ruta no encontrada" si C:\MyOtherFolder aún no existe.

Como resultado, la mayoría de los artículos sobre la copia de una estructura de carpetas utilizan un enfoque recursivo en el que el procedimiento recorre el árbol de directorios, un nivel a la vez, creando cada rama en su camino hacia el final. Entonces, en el ejemplo anterior, una función recursiva podría primero verificar si C:\MyOtherFolder existe y crearla si es necesario. Luego, bajará y verificará la existencia de la carpeta MySubFolder y luego la creará según sea necesario. Los métodos VBA y FSO se pueden usar en este enfoque recursivo.

Código: ( Adaptado por Xavi) [Seleccionar]
Function CreateFullPath(strTargetFolder As String)
    Dim ws As Object
    Set ws = CreateObject("WScript.Shell")
    ws.Run "cmd /c mkdir """ & strTargetFolder & """"
End Function
« Última modificación: Febrero 01, 2020, 12:58:57 pm por xavi »