2012-07-26 3 views
5

Próbuję przejść przez dany katalog, aby znaleźć najnowszy pobrany plik CSV. Z jakiegoś powodu moja funkcja Dir nie znajdzie żadnego pliku, nawet jeśli plik istnieje. Nie jestem do końca zaznajomiony z VBA, więc być może brakuje mi jakiegoś odniesienia do funkcji Dir, ale nie mogę znaleźć niczego online, co mówi mi, że muszę. Wszystkie przykłady i fora używają Dir tak jak ja, ale nie mogę zabrać mnie do pracy. Oto kod, proszę mi powiedzieć, czy można zobaczyć, co robię źle:Funkcja Dir w programie Excel 2010 VBA nie działa

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 

Plik test.txt jest w moim pliku pobiera i drukuje ciąg filePath się być prawidłowa ścieżka, ale zachować pojawia się błąd stwierdzający, że nie może znaleźć pliku. Nie powiedzie się przy pierwszym użyciu Dir (pathToFile). Każda pomoc będzie bardzo ceniona.

+0

Błąd nie jest z DIR. Błąd występuje w tym wierszu 'lastMod = FileDateTime (StrFile)' Musisz podać pełną ścieżkę. Podobnie dla innych. –

Odpowiedz

5

Dir() zwraca tylko część nazwy pliku ścieżki, tzn. Nie zwraca części folderu. Na przykład,

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

powraca MyFile.txt nie C:\MyPath\MyFile.txt

+0

OK, to zrobiło. Dzięki za odpowiedź, nie wiedziałem, że tak było w przypadku Dir. Sekcja pomocy w programie Excel stwierdza, że ​​jednak z jakiegoś powodu założyłem, że zwróci ona całą ścieżkę. To zaoszczędziło mi jeszcze kilka godzin. – derigible