簡體   English   中英

Excel vba - 目錄(路徑和文件)不返回所有匹配的文件

[英]Excel vba - Dir(Path & File) not returning all matching files

我有一個奇怪的難題,除了少數情況外,DIR() 命令按預期返回文件。

        MyFile = Dir(FilePath & FileLook)
        FileFound = ""
        FileKt = 0
        Do While MyFile <> ""
            FileFound = MyFile
            FileKt = FileKt + 1
            MyFile = Dir
        Loop

FilePath = 文件所在的目錄(例如: C:\\Folder\\ )

FileLook = 尋找特定文件的模板,該文件通常在 YYYYMMDD 之后具有 HHMM(例如:ERROR_FILE_20201129*)

一個不起作用的例外是沒有擴展名(.txt;.zip;等)和“.”的文件。 名稱中的分隔符

XXXXXX.XXX.PROJ.EVENT_YYYYMMDD

返回文件(多數)的搜索示例: FileLook = ERROR_FILE_20201029* 返回 ERROR_FILE_202010291112.txt

注意:作為例外,我嘗試使用和不使用“*”進行搜索

要僅查找 ERROR_FILE_202011291112.txt,您可以使用

FileLook = 'ERROR_FILE_20201129*.*' 

但是“*”之前的任何“.”似乎都會使過濾器無效。

無可否認,這是一種解決方法,但您也可以通過讓 FileLook = "" 並在 Dir 命令外部應用過濾器來找到目錄中的所有文件。

MyFile = Dir(FilePath)
FileFound = ""
FileKt = 0
Do While MyFile <> ""
    If MyFile Like FileLook Then
        FileFound = MyFile
        FileKt = FileKt + 1
    End If
    MyFile = Dir
Loop

以下文件名位於我對此進行測試的文件夾中。

  • ERROR_FILE_2020.11.29.1112
  • ERROR_FILE_2020.11.29.1112.txt
  • ERROR_FILE_202011291112.txt

使用 FileLook = "" 評估所有三個文件

希望這對你有用。

謝謝BZngr! 你確實給我指出了一個解決方法。 原本的

MyFile = Dir(FilePath & FileLook)

被保留。 我在反復測試中發現,當某個點只有數字時,Dir() 語句沒有找到任何文件。

  • PROJ.EVENT_20201030* 返回“”
  • PROJ.EVENT_2020* 返回“”
  • PROJ.EVENT_202* 返回“”
  • PROJ.EVENT_20* 返回“PROJ.EVENT_202010301421” 至於為什么? ♪Twilight Zone 音樂♪ 文件夾中有多年的文件,所以我想限制循環播放不需要的文件。 至少這樣我可以限制到本世紀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM