質問

指定されたディレクトリをループして、最新のダウンロードされた 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) の最初の使用時に失敗します。ご協力をいただければ幸いです。

役に立ちましたか?

解決

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top