2012-07-26 36 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ファイルには、私のダウンロードファイルにあり、filePathに文字列が正しいパスであることを出力しますが、私は続けますファイルが見つからないというエラーが表示されます。 Dir(pathToFile)の最初の使用で失敗します。どんな助けでも大歓迎です。

+0

エラーはDIRではありません。エラーはこの行にあります。 'lastMod = FileDateTime(StrFile)'完全なパスを指定する必要があります。その他の場合も同様です。 –

答えて

5

Dir()は、パスのファイル名部分のみを返します。つまり、フォルダ部分を返しません。例えば、

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

戻りMyFile.txtはないC:\MyPath\MyFile.txt

+0

それはそれでした。答えてくれてありがとう、私はこれがDirの場合であることは知らなかった。 Excelのヘルプセクションには、何らかの理由で私がそれがパス全体を返すと仮定していることが記載されています。それは私に数時間を節約しました。 – derigible

関連する問題