2012-07-26 1 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)'전체 경로를 입력해야합니다. 다른 사람들도 마찬가지입니다. –

답변

5

Dir()은 경로의 파일 이름 부분 만 반환합니다. 즉, 폴더 부분을 반환하지 않습니다. 예를 들어,

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

반환 MyFile.txt하지 C:\MyPath\MyFile.txt

+0

좋아, 그랬어. 대답 해 주셔서 감사 드리며, 저는 이것이 이것이 Dir의 경우라고 인식하지 못했습니다. 엑셀의 도움말 섹션에서 나는 어떤 이유로 전체 경로를 반환한다고 가정합니다. 시간이 몇 시간 더 절약되었습니다. – derigible