Функция Dir в Excel 2010 VBA не работает

Я пытаюсь просмотреть заданный каталог, чтобы найти последний загруженный CSV-файл. По какой-то причине моя функция Dir не находит никакого файла, даже если он существует. Я не совсем знаком с VBA, поэтому, возможно, мне не хватает какой-то ссылки для выполнения функции Dir, но я не могу найти в Интернете ничего, что говорит мне, что мне это нужно. Все примеры и форумы используют Dir, как и я, но я не могу заставить свою работать. Вот код, пожалуйста, скажите мне, если вы видите, что я делаю неправильно:

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

Файл test.txt находится в моем файле загрузок, и строка filePath распечатывается как правильный путь, но я продолжаю получать сообщение об ошибке, указывающее, что он не может найти файл. Ошибка при первом использовании Dir(pathToFile). Любая помощь будет принята с благодарностью.


person derigible    schedule 26.07.2012    source источник
comment
Ошибка не в DIR. Ошибка в этой строке lastMod = FileDateTime(StrFile) Вы должны указать полный путь. Аналогично для других.   -  person Siddharth Rout    schedule 26.07.2012


Ответы (1)


Dir() возвращает только часть имени файла пути, т. е. не возвращает часть папки. Например,

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

возвращает MyFile.txt, а не C:\MyPath\MyFile.txt

person mwolfe02    schedule 26.07.2012
comment
Хорошо, это сделало это. Спасибо за ответ, я не знал, что это относится к Dir. В разделе справки в Excel указано, что, но я по какой-то причине предположил, что он вернет весь путь. Это сэкономило мне еще несколько часов. - person derigible; 26.07.2012