当前位置: 首页 > 知识库问答 >
问题:

使用VBA循环浏览文件夹中的文件?

莘欣怿
2023-03-14

我想在Excel 2010中使用vba循环浏览目录的文件。

在循环中,我需要:

  • 文件名和

我已经编写了以下代码,如果文件夹中的文件不超过50个,它就可以正常工作,否则速度会慢得离谱(我需要它来处理带有

工作但速度太慢的代码(每100个文件15秒):

Sub LoopThroughFiles()
   Dim MyObj As Object, MySource As Object, file As Variant
   Set MySource = MyObj.GetFolder("c:\testfolder\")
   For Each file In MySource.Files
      If InStr(file.name, "test") > 0 Then
         MsgBox "found"
         Exit Sub
      End If
   Next file
End Sub

问题解决:

  1. 我的问题已通过以下解决方案得到解决:以特定方式使用Dir(15000个文件为20秒),并使用命令FileDateTime检查时间戳
  2. 考虑到下面的另一个答案,20秒缩短为不到1秒

共有3个答案

杨轶
2023-03-14

这是我对函数的解释:

'#######################################################################
'# LoopThroughFiles
'# Function to Loop through files in current directory and return filenames
'# Usage: LoopThroughFiles ActiveWorkbook.Path, "txt" 'inputDirectoryToScanForFile
'# https://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba
'#######################################################################
Function LoopThroughFiles(inputDirectoryToScanForFile, filenameCriteria) As String

    Dim StrFile As String
    'Debug.Print "in LoopThroughFiles. inputDirectoryToScanForFile: ", inputDirectoryToScanForFile

    StrFile = Dir(inputDirectoryToScanForFile & "\*" & filenameCriteria)
    Do While Len(StrFile) > 0
        Debug.Print StrFile
        StrFile = Dir

    Loop

End Function
家浩瀚
2023-03-14

迪尔似乎很快。

Sub LoopThroughFiles()
    Dim MyObj As Object, MySource As Object, file As Variant
   file = Dir("c:\testfolder\")
   While (file <> "")
      If InStr(file, "test") > 0 Then
         MsgBox "found " & file
         Exit Sub
      End If
     file = Dir
  Wend
End Sub
古文康
2023-03-14

Dir需要通配符,因此您可以提前为test添加过滤器,避免测试每个文件

Sub LoopThroughFiles()
    Dim StrFile As String
    StrFile = Dir("c:\testfolder\*test*")
    Do While Len(StrFile) > 0
        Debug.Print StrFile
        StrFile = Dir
    Loop
End Sub
 类似资料:
  • 本文向大家介绍在Bash中循环浏览文件内容,包括了在Bash中循环浏览文件内容的使用技巧和注意事项,需要的朋友参考一下 通常,需要使用bash脚本从文件中读取每一行。有多种方法可以读取文件中的行。在下面的示例中,我们首先描述了如何创建示例文件,然后运行读取该示例文件的脚本。 创建一个要读取的文件 运行上面的代码给我们以下结果- 使用做时 在这种方法中,我们使用do-while循环读取文件。我们在文

  • 问题内容: 我想浏览当前文件夹及其所有子文件夹,并获取所有扩展名为.htm | .html的文件。我发现可以找到一个对象是目录还是文件,如下所示: 最后,我想将所有文件及其路径放在一个数组中。这样有可能吗? 问题答案: 您可以用来递归遍历目录及其所有子目录: 要构建这些名称的列表,可以使用列表理解:

  • 问题内容: 我需要知道如何在Java中获取“文件夹浏览”对话框。我知道SWT。但是我需要摇摆吗?有什么解决办法吗? [当我们开始日食时,它将要求选择工作区。那时我们可以看到“浏览文件夹”对话框。 问题答案: 听起来好像您想使用JFileChooser。Oracle有很多关于基本Swing组件以及如何使用它们的教程。这是JFileChooser:link的教程页面。

  • 本文向大家介绍JavaScript Web浏览器中的事件循环,包括了JavaScript Web浏览器中的事件循环的使用技巧和注意事项,需要的朋友参考一下 示例 绝大多数现代JavaScript环境都是根据事件循环工作的。这是计算机编程中的一个常见概念,从本质上讲意味着您的程序不断等待新事物发生,并且当新事物发生时对其做出反应。在主机环境调用到你的程序,在产卵事件循环,然后一个“转”或“嘀”或“任

  • 主要内容:1 Swing实现文件夹浏览1 Swing实现文件夹浏览 我们可以借助IO流、Swing和事件处理来开发Java中的Folder Explorer。让我们看看在Java中创建文件夹资源管理器的代码。 输出结果为:

  • 我试图理解为什么下面的promise设置不起作用。 (注意:我已经用async.map解决了这个问题。但是我想知道为什么我下面的尝试不起作用。) 正确的行为应该是:bFunc应该运行尽可能多的时间来读取所有映像文件(下面的bFunc运行两次),然后cFunc控制台打印“End”。 谢谢! 尝试1:它在cFunc()处运行并停止。 尝试2:在这种情况下,我使用了一个for循环,但是它执行得不正常。控