分享

Excel怎样批量提取文件夹和子文件夹所有文件

 yuxinrong 2021-01-28

上次分享了《怎样批量提取文件夹下文件名》,介绍了文件夹下批量提取文件处理方法,子文夹下面文件无法提取,使用很不方便,下面分享包含子文件所有文件提取处理方法。

Excel怎样批量提取文件夹和子文件夹所有文件

Excel怎样批量提取文件夹和子文件夹所有文件












工具/原料

  • Microsoft Office Excel 2007

  • Excel VBA

处理方法/步骤

  1. 首先打开Microsoft Office Excel 2007,新建文档并保存文件名《Excel怎样批量提取文件夹和子文件夹所有文件 .xlsm》(演示文件,下面代码复制到能运行宏的工作簿都可以)如图。

    Excel怎样批量提取文件夹和子文件夹所有文件




  2. 然后按下快捷键ALT+F11打开VBE(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。

    Excel怎样批量提取文件夹和子文件夹所有文件





  3. 然后插入了一个模块1,在代码框中复制如下代码:

    Option Base 1

    Private Function WJM(m)

        '2020-10-20 22:32:12

        Dim m1 As String, r1 As Long, r2 As Long

        r1 = 1

        m1 = CStr(m)

        Do

            r2 = InStr(r1, m1, "\")

            If r2 <> 0 Then r1 = r2 + 1 Else r1 = r1

        Loop Until r2 = 0

        WJM = Right(m1, Len(m1) - r1 + 1)

    End Function

    Sub 列取所有文件名()

        '2020-10-20 22:52:57

        Dim mym, d1 As Object, d2 As Object, i, myfn, m As String, m1, mb(), mb1(), k

        On Error Resume Next

        Set d1 = CreateObject("scripting.dictionary")

        Set d2 = CreateObject("scripting.dictionary")

        m = Range("b1").Text

        d1.Add (m & "\"), ""

        i = 0

        Do While i < d1.Count

            m1 = d1.keys

            mym = Dir(m1(i), vbDirectory)

            Do While mym <> ""

                If mym <> "." And mym <> ".." Then

                    If (GetAttr(m1(i) & mym) And vbDirectory) = vbDirectory Then

                        d1.Add (m1(i) & mym & "\"), ""

                    End If

                End If

                mym = Dir

            Loop

            i = i + 1

        Loop

        For Each m1 In d1.keys

            myfn = Dir(m1)

            Do While myfn <> ""

                d2.Add (m1 & myfn), ""

                myfn = Dir

            Loop

        Next m1

        k = 0

        mb = d2.keys

        ReDim mb1(d2.Count, 3)

        For i = 0 To d2.Count - 1

            k = k + 1

            mb1(k, 1) = k

            mb1(k, 2) = WJM(mb(i))

            mb1(k, 3) = mb(i)

        Next i

        If Range("A" & Rows.Count).End(xlUp).Row > 4 Then

            Range("A5:C" & Range("A" & Rows.Count).End(xlUp).Row).ClearContents

        End If

        If k <> 0 Then Range("a5:C" & k + 4) = mb1

        MsgBox "完成"

    End Sub

    Excel怎样批量提取文件夹和子文件夹所有文件

    Excel怎样批量提取文件夹和子文件夹所有文件








  4. 以上操作动态过程如下:

    Excel怎样批量提取文件夹和子文件夹所有文件



  5. 回到工作表窗口,在B1填写文件夹路径,然后运行【列取所有文件名】宏(菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选该宏名,执行),在5行下列出文件名和路径,运行过程如下图。

    Excel怎样批量提取文件夹和子文件夹所有文件

    Excel怎样批量提取文件夹和子文件夹所有文件






  6. 为了方便操作,增加一个【列举所有文件名】宏命令按钮,操作如下图。

    Excel怎样批量提取文件夹和子文件夹所有文件

    Excel怎样批量提取文件夹和子文件夹所有文件

  7. 7

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多