【问题标题】:Determine files of a specific type in a folder without using loop在不使用循环的情况下确定文件夹中特定类型的文件
【发布时间】:2011-04-05 06:51:15
【问题描述】:

有没有办法使用VBA中的FileSystemObject来确定文件夹中特定类型(例如.PDF)的文件数,而不使用诸如

之类的循环
For Each file In folder.Files
    'Check file type and count
Next

【问题讨论】:

  • 即使有一个库可以做到这一点,也不能忽视查看每个文件。我认为没有更快的方法。
  • 循环有什么问题?如果这是您经常做的事情,请将其粘贴在用户定义的函数中。
  • 感谢 bdares 和 Jean-Francois 提供帮助的 cmets。所以循环似乎是要走的路。

标签: vba excel


【解决方案1】:

您可以在不依赖 FSO 的情况下执行此操作,同时也无需手动检查文件扩展名;

dim file as String, countOf As Long
file = Dir$("c:\xxxxxx\*.pdf")
Do until file = ""
    countOf = (countOf + 1)
    file = Dir$()
Loop

MsgBox countOf

【讨论】:

  • 这是 Alex 的一个有趣的方法。但是您仍然使用循环来计算文件,尽管您避免了不符合条件的文件。
  • 这似乎是最好的方法,因为它也比使用 FileSystemObject 更快。
【解决方案2】:

对于 Excel,您需要使用循环。循环真的不会花那么长时间,但是,如果由于某种原因你的厌恶循环并且你必须有一个衬垫,那么批处理就是要走的路。

我没有测试它,而是在目录中创建了一个文本文件,命名为whatever.bat,右键单击该文件并选择编辑(或使用notepad++编辑)。然后插入以下代码:

set /a counter = 0
for /f %%f in (*.pdf) do set /a count += 1

echo counter: %counter%
pause

保存文件,然后双击打开并运行程序。

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2011-03-01
    相关资源
    最近更新 更多