2012-07-26 27 views
5

Estoy intentando recorrer un directorio determinado para encontrar el último archivo csv descargado. Por alguna razón, mi función Dir no encontrará ningún archivo, incluso si el archivo existe. No estoy totalmente familiarizado con VBA, así que tal vez me esté faltando algún tipo de referencia para realizar la función Dir, pero no puedo encontrar nada en línea que me diga que necesito hacerlo. Todos los ejemplos y foros usan Dir como lo hago, pero no puedo hacer que los míos funcionen. Aquí está el código, por favor dígame si usted puede ver lo que estoy haciendo mal:Función Dir en Excel 2010 VBA no funciona

Public Function Get_File() as string 
    Dim filePath As String 

    ChDir ("..") 
    filePath = CurDir 
    'Goes back to Documents directory to be in same directory as macro 
    ChDir (filePath & "\Documents") 
    filePath = filePath & "\Downloads\test.txt" 
    filePath = getLatestFile(filePath) 

    Get_File = filePath 
End Function 

Public Function getLatestFile(pathToFile As String) As String 
    Dim StrFile As String 
    Dim lastMod As Variant 
    Dim nextMod As Variant 
    Dim lastFileName As String 

    StrFile = Dir(pathToFile) 
    lastFileName = StrFile 
    lastMod = FileDateTime(StrFile) 
    While Len(StrFile) > 0 
     Debug.Print StrFile 
     StrFile = Dir 
     nextMod = FileDateTime(StrFile) 
     If nextMod > lastMod Then 
      lastFileName = StrFile 
      lastMod = nextMod 
     End If 
    Wend 

    getLatestFile = lastFileName 
End Function 

El archivo test.txt está en mi archivo de descargas y las impresiones de cuerda FilePath ser el camino correcto, pero sigo recibiendo un error que indica que no puede encontrar el archivo. Falla al primer uso de Dir (pathToFile). Cualquier ayuda sería muy apreciada.

+0

el error no es con el DIR. El error es con esta línea 'lastMod = FileDateTime (StrFile)' Debe proporcionar la ruta completa. Del mismo modo para otros. –

Respuesta

5

Dir() solo devuelve la parte del nombre de archivo de la ruta, es decir, no devuelve la parte de la carpeta. Por ejemplo,

Dir("C:\MyPath\MyFile.txt") 

rendimientos MyFile.txt no C:\MyPath\MyFile.txt

+0

Ok, eso lo hizo. Gracias por responder, no sabía que este era el caso de Dir. La sección de ayuda en Excel indica que, por alguna razón, asumí que devolvería todo el camino. Eso me ahorró varias horas más. – derigible

Cuestiones relacionadas