美文网首页
利用Excel VBA 提取指定文件夹下指定格式的文件(父子转换

利用Excel VBA 提取指定文件夹下指定格式的文件(父子转换

作者: 麦睿蔻 | 来源:发表于2020-04-03 11:25 被阅读0次

    一个文件夹下有不定数量的子文件夹及jpg、xlsm、xls等文件,同时各子文件夹下也有数量不定的各种文件,使用VBA的父子转换法可以提取指定文件夹下的指定格式的文件,亲测运行速度是递归法的5倍以上,本例提取xls和xlsm文件,具体代码如下:

    Sub 父子转换法提取指定文件夹下的文件()
      Dim fd As Object
      Dim myPath As String
      Set fd = Application.FileDialog(msoFileDialogFolderPicker)
      With fd
            If .Show = -1 Then myPath = .SelectedItems(1) Else Exit Sub
      End With
      Dim 父亲(1 To 1000) As String
      Dim f, i, k, f2, f3, x
      Dim arr1(1 To 10000, 1 To 1) As String, q As Integer
      Dim t
      t = Timer
      父亲(1) = myPath & "\"
      i = 1: k = 1
      Do While i < UBound(父亲)
        If 父亲(i) = "" Then Exit Do
        f = Dir(父亲(i), vbDirectory)
        Do
          If InStr(f, ".") = 0 And f <> "" Then
            k = k + 1
            父亲(k) = 父亲(i) & f & "\"
          End If
          f = Dir
        Loop Until f = ""
        i = i + 1
      Loop
      '*******下面是提取各个文件夹的文件***
      For x = 1 To UBound(父亲)
          If 父亲(x) = "" Then Exit For
           f3 = Dir(父亲(x) & "*.xls*")
         Do While f3 <> ""
           q = q + 1
           arr1(q, 1) = 父亲(x) & f3
           f3 = Dir
         Loop
      Next x
      ActiveSheet.UsedRange = ""
      Range("a1").Resize(q) = arr1
      Debug.Print Format(Timer - t, "0.00000")
    End Sub
    

    接下来,可以使用Name...As命令对文件进行移动、重命名等工作。

    相关文章

      网友评论

          本文标题:利用Excel VBA 提取指定文件夹下指定格式的文件(父子转换

          本文链接:https://www.haomeiwen.com/subject/byfhphtx.html