Duda sobre creación de carpetas con VBA

Estoy haciendo una macro que me guarda en pdf unas hojas de excel en una carpeta que creé en mi escritorio y me funciona sin ningún problema. Esa carpeta yo la puse como de prueba, y en realidad yo lo que quisiera es crear una carpeta a través del mismo código y guardarla en la carpeta documentos de mi disco. Ya he visto algunos modelos de macros que me pueden servir, sin embargo la duda que se me presenta es si hay manera de que yo pueda validar la ruta en la que está la carpeta documentos, ejemplo en mi computadora está en el disco D, pero en la de mis esposa está en el disco C. Por ejemplo, saber si se puede hacer una consulta que diga ¿dónde está la carpeta documentos? Y el resultado sea C:\Usuarios\dvelasquez\documents y ese resultado lo pueda usar para asignar la ruta donde voy a crear la carpeta. ¿Hay manera de hacerlo? Lo he buscado y no lo he conseguido.

2 respuestas

Respuesta
4

Revisa si lo siguiente es lo que necesitas:

Sub RevisaCarpeta()
  Dim sNombre As String
  On Error Resume Next
  If Dir("C:\Usuarios\dvelasquez\documents", vbDirectory) = "" Then
    If Dir("D:\Usuarios\dvelasquez\documents", vbDirectory) = "" Then
    Else
      sNombre = "D:\Usuarios\dvelasquez\documents"
    End If
  Else
    sNombre = "C:\Usuarios\dvelasquez\documents"
  End If
  If sNombre = "" Then
    MsgBox "No existe ni en C: ni en D:"
  Else
    MsgBox "Carpeta disponible en : " & sNombre
    '
    'Aquí continúa tu código
    '
  End If
End Sub

Muchas gracias por tu respuesta Dante, sin embargo no es exactamente lo que busco, lo que quisiera es saber si se puede validar la ubicación de la carpeta "documentos" si por ejemplo yo corriera la macro en la computadora de mi esposa, la carpeta ya no seria dvelasquez sino otro nombre o en "usuarios" directamente. Es decir, hasta donde se la carpeta "documentos" está en todas las computadoras, lo que cambia es la ruta porque una puede estar en C, otro puede tener D. 

En ese caso prueba lo siguiente:

Sub CarpetaDocumentos()
  Dim sNombre As String
  sNombre = CreateObject("WScript.Shell").SpecialFolders("MyDocuments")
  MsgBox "Carpeta disponible en : " & sNombre
End Sub
Respuesta
1

También puedes usar variables de entorno.

Por ejemplo cuando guardo un archivo con el valor de una celda

RutaArchivo = Environ$("USERPROFILE") & "\MyDocuments\" & Range("j1") & ".ext"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas