VBA VB6 - Cuando el test DIR (Directorio) se cuelga!

Noviembre 2016



El test más simple para comprobar si la ruta de una carpeta es válida es evidentemente...
    If Dir(MiCarpeta) = "" Then 
        'La carpeta no existe o no esta bien escrita
End If


Salvo que... Si la ruta de la carpeta está bien especificada pero la carpeta está vacía Dir devuelve también "", pero algunas veces puede ser necesario saber si la carpeta existe, así esté vacía.
En este caso podemos reemplazar este test por...

En un modulo general
Public Function TestSiVacio(Car As String) As Long 
Dim Obj, CarP, F 
    On Error GoTo Error 'Si no se encuentra la carpeta 
    Set Obj = CreateObject("Scripting.FileSystemObject") 
    Set CarP = Obj.Getfolder(Car) 
    Set F = CarP.Files 
    TestSiVide = F.Count 
    Set CarP = Nothing 
    Set F = Nothing 
Salida: 
    Set Obj = Nothing 
    Exit Function 
Error: 
    TestSiVacio = -1 
    Resumen Salida 'El Resumen es necesario para evitar nudos en la pila. 
End Function


En el cuerpo del código...
Sub Test(Car as String) 
Dim Nb As Long, MiCarpeta as String 
    If Car <> "" Then 
        MiCarpeta = Car & IIf(Right(Car, 1) <> "\", "\", "") ' Eventualmente agregar el slash invertido
        Nb = TestSiVacio(MiCarpeta ) 'Devuelve -1 si error de carpeta (error 76) 
        If Nb = 0 Then 
            MsgBox "La carpeta seleccionada no contiene archivos", vbCritical, "Seleccionar carpeta" 
        ElseIf Nb = -1 Then 
            MsgBox "La carpeta seleccionada no es o ya no es válida", vbCritical, "Seleccionar carpeta" 
        Else 
             MsgBox "La carpeta seleccionada es válida" 
        End If 
    End If 
End Sub



Consulta también :
El documento «VBA VB6 - Cuando el test DIR (Directorio) se cuelga!» de CCM (es.ccm.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo siempre y cuando respetes las condiciones de dicha licencia y des crédito a CCM.