為了匯總,有時我們要把統一個文件夾的所有子文件夾的名稱,若是是少數幾個可以復制粘貼,若是幾十上百或者更多就麻煩了,今天小編和大師分享用VBA來讀取文件名稱或者讀取文件夾內的EXCEL文件名稱
先在F盤(也可以在其它的非系統盤)——右擊——新建——文件夾——然后給文件夾定名為:讀取文件夾
新建一個空白的EXCEL文檔——然后點擊文件——保留——保留地址就選擇方才成立的文件夾那邊——然后給文件定名為:讀取文件夾名稱
接著在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
若是想經由過程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
案例申明:此刻讀取文件夾里有三個子文件夾,每個子文件夾都有EXCEL文檔,此刻要把所有的本家兒文件夾和子文件夾下的EXCEL文件名提掏出來。
接著點擊視圖——宏——查看宏(也可以直接按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
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!