• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    如何用VBA讀取一個文件夾內所有子文件夾的名稱

    為了匯總,有時我們要把統一個文件夾的所有子文件夾的名稱,若是是少數幾個可以復制粘貼,若是幾十上百或者更多就麻煩了,今天小編和大師分享用VBA來讀取文件名稱或者讀取文件夾內的EXCEL文件名稱

    東西/原料

    • EXCEL2013

    提取文件夾名稱

    1. 1

      先在F盤(也可以在其它的非系統盤)——右擊——新建——文件夾——然后給文件夾定名為:讀取文件夾

    2. 2

      新建一個空白的EXCEL文檔——然后點擊文件——保留——保留地址就選擇方才成立的文件夾那邊——然后給文件定名為:讀取文件夾名稱

    3. 3

      接著在EXCEL那邊同時按alt+F11,打開宏編纂器,點擊插入——模塊,在模塊那邊輸入如下代碼(文件夾的地址可以在電腦地址欄那邊復制):

      Sub 提取文件夾名稱()

      Dim fs As Object

      n = 1

      Set fs = CreateObject("Scripting.FileSystemObject")

      Set f = fs.getfolder("F:\讀取文件夾")

      For Each fd In f.subfolders

      Cells(n, 1) = fd.Name

      n = n + 1

      Next

      Set f = Nothing

      Set fs = Nothing

      End Sub

    4. 4

      若是想經由過程VBA代碼由本身選擇文件夾再執行提取文件夾名稱,可以在VBA編纂模塊那邊輸入如下代碼:

      Sub getFldList1()

          Dim Fso, Fld

          Dim Arr(1 To 999), k%

          Set Fso = CreateObject("Scripting.FileSystemObject")

          Set Fld = Fso.getfolder(CreateObject("Shell.Application").BrowseForFolder(0, "請選擇文件夾", 0, "").Self.Path & "")

          For Each fd In Fld.subfolders

              k = k + 1

              Arr(k) = fd.Name

          Next

          [A1].Resize(k) = Application.Transpose(Arr)

      End Sub

    提取文件夾下的

    1. 1

      案例申明:此刻讀取文件夾里有三個子文件夾,每個子文件夾都有EXCEL文檔,此刻要把所有的本家兒文件夾和子文件夾下的EXCEL文件名提掏出來。

    2. 2

      接著點擊視圖——宏——查看宏(也可以直接按alt+F11)打開宏編纂器——點擊插入模塊,然后插入如下圖的代碼:

      Sub 遍歷文件夾()

        'On Error Resume Next

        Dim fn(1 To 10000) As String

        Dim f, i, k, f2, f3, x

        Dim arr1(1 To 100000, 1 To 1) As String, q As Integer

        Dim t

        t = Timer

        fn(1) = ThisWorkbook.Path & "\"

        i = 1: k = 1

        Do While i < UBound(fn)

          If fn(i) = "" Then Exit Do

          f = Dir(fn(i), vbDirectory)

          Do

            If InStr(f, ".") = 0 And f <> "" Then

              k = k + 1

              fn(k) = fn(i) & f & "\"

            End If

            f = Dir

          Loop Until f = ""

          i = i + 1

        Loop

        '*******接下來是提取各個文件夾的文件***

        For x = 1 To UBound(fn)

            If fn(x) = "" Then Exit For

             f3 = Dir(fn(x) & "*.*")

           Do While f3 <> ""

             q = q + 1

             arr1(q, 1) = fn(x) & f3

             f3 = Dir

           Loop

        Next x

        ActiveSheet.UsedRange = ""

        Range("a1").Resize(q) = arr1

        MsgBox Format(Timer - t, "0.00000")

        End Sub

    注重事項

    • 但愿能幫忙到你
    • 發表于 2019-02-09 20:00
    • 閱讀 ( 3874 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    admin
    admin

    0 篇文章

    作家榜 ?

    1. xiaonan123 189 文章
    2. 湯依妹兒 97 文章
    3. luogf229 46 文章
    4. jy02406749 45 文章
    5. 小凡 34 文章
    6. Daisy萌 32 文章
    7. 我的QQ3117863681 24 文章
    8. 華志健 23 文章

    推薦文章

    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆