Ver Mensaje Individual
  #12 (permalink)  
Antiguo 14/05/2008, 01:24
Foxi
 
Fecha de Ingreso: marzo-2008
Mensajes: 35
Antigüedad: 17 años
Puntos: 0
Re: Ayuda, desesperado, Backup, ¿Error en CopyFolder?

Para que conste:

He tenido que utilizar la función "F_bComprueba_Crea_Directorio" para comprobar si existe un directorio (y si no existe crearlo), y me he acordado de que lo había compartido con el Foro en esta consulta, utilizando una función propia "F_Buscar_Texto" en vez de InStr... Me he dado cuenta de que los resultados de estas dos funciones difieren en caso de que no se encuentre el texto buscado... La función "F_bComprueba_Crea_Directorio" utilizando InStr cambia un poquito por ello, la muetsro para el que lo quiera utilizar correctamente:

Código:
'********************************************************************************
'Nombre: F_bComprueba_Crea_Directorio
'Descripción: Comprueba si existe un directorio pasado como parámetro, si no existe
'              lo crea creando, si hace falta, los directorios padres.
'             Si no se puede crear el directorio se devuelve False.
'Fecha: 02/11/2004
'********************************************************************************
Function F_bComprueba_Crea_Directorio(v_sDirectorio As String) As Boolean
Dim l_sDirectorio_Temp As String
Dim l_bSin_Directorios_Padres As Boolean
Dim l_nPosicion_Temp As Integer
Dim l_bComprobado_Dir_Padre As Boolean
    
    ' Inicializo valores.
    l_sDirectorio_Temp = v_sDirectorio
    l_bSin_Directorios_Padres = False
    l_bComprobado_Dir_Padre = False
    l_nPosicion_Temp = 0
    
    ' Efectúo un bucle hasta que se cree el directorio final o no se encuentren
    '  directorios padres.
    While ((Dir(l_sDirectorio_Temp, vbDirectory) = "") And _
            (l_bSin_Directorios_Padres = False))
        
        ' Compruebo que el directorio tenga directorio padre.
        l_nPosicion_Temp = l_nPosicion_Temp + 1
        l_nPosicion_Temp = InStr(l_nPosicion_Temp, l_sDirectorio_Temp, "\", vbTextCompare)
        If (l_nPosicion_Temp < 1) Then
            If (l_bComprobado_Dir_Padre = False) Then
                l_bSin_Directorios_Padres = True
            Else
                l_nPosicion_Temp = Len(l_sDirectorio_Temp) + 1
                l_sDirectorio_Temp = l_sDirectorio_Temp & "\"
            End If
        End If
        
        If (l_nPosicion_Temp > 0) Then
            If (Dir(Left(l_sDirectorio_Temp, l_nPosicion_Temp - 1), vbDirectory) = "") Then
                Call MkDir(Left(l_sDirectorio_Temp, l_nPosicion_Temp - 1))
            Else
                l_bComprobado_Dir_Padre = True
            End If
        Else
            l_bSin_Directorios_Padres = True
        End If
        
        ' Inicializo el directorio original.
        l_sDirectorio_Temp = v_sDirectorio
        
    Wend
    
    F_bComprueba_Crea_Directorio = Not l_bSin_Directorios_Padres
    
End Function
Saludos, Foxi.