5

指定されたディレクトリをループして、ダウンロードした最新の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)を最初に使用すると失敗します。どんな助けでも大歓迎です。

4

1 に答える 1

5

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

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

返さMyFile.txtないC:\MyPath\MyFile.txt

于 2012-07-26T18:15:56.710 に答える