2012-07-26 99 views
5

我試圖通過給定的目錄來查找最新下載的csv文件。由於某些原因,即使文件存在,我的Dir函數也不會找到任何文件。我對VBA並不完全熟悉,所以我可能會錯過某種參考來執行Dir函數,但我無法在網上找到任何告訴我需要的東西。所有的例子和論壇都像我一樣使用Dir,但我無法工作。下面是代碼,請告訴我,如果你能看到我在做什麼錯:Excel 2010中的Dir函數VBA不能正常工作

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文件是在我的下載文件的文件路徑字符串打印出來是正確的道路,但我一直得到一個錯誤,指出它找不到該文件。它在第一次使用Dir(pathToFile)時失敗。任何幫助將不勝感激。

+0

該錯誤是不與DIR。錯誤是在這行'lastMod = FileDateTime(StrFile)'你必須提供完整的路徑。對其他人也一樣。 – 2012-07-26 18:11:13

回答

5

Dir()只返回路徑的文件名部分,即它不返回文件夾部分。例如,

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

MyFile.txt返回不C:\MyPath\MyFile.txt

+0

好的,就是這樣。感謝您的回答,我不知道這是迪爾的情況。 Excel中的幫助部分指出,但由於某種原因,我認爲它會返回整個路徑。這爲我節省了幾個小時。 – derigible 2012-07-26 18:46:34