【问题标题】:Access more than one type of file with Dir() in Excel VBA?在 Excel VBA 中使用 Dir() 访问多种类型的文件?
【发布时间】:2022-01-13 10:48:15
【问题描述】:

嘿,我有一个代码,我想在不同文件夹中找到 .jpg 文件,所以我的代码如下所示:

file = Dir(folder & "\*.jpg")

但事实证明这些文件夹中也有 .png 文件,有没有一种简单的方法可以让 Dir() 也找到 png 图像?也许以某种方式使用正则表达式,甚至是我没想到的更简单的方法?我知道有很多方法,但如果我不必更改所有代码,我会喜欢它...感谢任何人回答:)

【问题讨论】:

  • 您的代码应该搜索所有文件,然后在迭代期间过滤它以获得必要的扩展名。

标签: excel vba directory png jpeg


【解决方案1】:

请尝试下一个方法:

   Dim file as string, folder as string, arrExt
    folder = "your folder path"
    file = Dir(folder & "\*.*")
    Do While file <> ""
        arrExt = split(file, ".")
        If UCase(arrExt(Ubound(arrExt))) = "JPG" Or _
           UCase(arrExt(Ubound(arrExt))) = = "PNG" Then
            ' do whatever you need
        End If
        file = Dir
    Loop

【讨论】:

  • 非常感谢,我不太明白会发生什么,但我想它可以工作啊哈哈哈,我仍然很惊讶它不可能用更简单的方法来实现
【解决方案2】:

使用Dir(folder &amp; "\*.*") 列出所有文件并手动检查它是否是您感兴趣的文件,例如使用如下函数:

Function isImage(fileName As String) As Boolean
    Dim ext As String, p As Long
    p = InStrRev(fileName, ".")
    If p = 0 Then Exit Function
    ext = LCase(Mid(fileName, p + 1))
    isImage = (ext = "jpg" Or ext = "jpeg" Or ext = "png")
End Function

【讨论】:

  • 感谢它运行良好! :) 但上面的评论更适合我的代码,因为在那之后我做了一个循环
  • 很好的解决方案。 @FaneDuru 的 Split() 方法在使用多个点命名文件时非常有用,例如 xyz_01.01.22.jpg。
  • @bugdrown 因为我正在使用InStrRev(它会找到 last 出现),它也适用于具有多个点的文件。
  • @FunThomas 抱歉,我读到了InStr()
猜你喜欢
  • 1970-01-01
  • 2017-04-25
  • 1970-01-01
  • 2010-12-01
  • 2016-06-13
  • 1970-01-01
  • 2023-03-23
  • 2022-12-19
  • 1970-01-01
相关资源
最近更新 更多