如何獲取指定文件夾下文件的名稱?
很久以前我們分享過DOS的方法,操作動畫如下:
VBA可以通過Wscript.Shell調(diào)用DOS語句,以后我們可能會分享到這部分內(nèi)容~所以這里先簡單說下動畫中DOS語句的意思
DIR *.*/B>LIST.TXT
DIR可以簡單理解成函數(shù)。
*.* *是通配符,第一個*是文件名,第二個*是文件格式。如果只要excel文件,就修改為*.xls。
/b 是使用空格式,沒有標(biāo)題信息之類的。
list.txt是生成的文件類型和名字。
綜上所述,如果是生成excel文件的目錄,并以excel來呈現(xiàn),命名為目錄,語句就改為DIR *.xls /B >目錄.xls
除了DOS的方法還有瀏覽器法、函數(shù)法以及我們今天分享的VBA法。
函數(shù)法如下圖所示,瀏覽器法這里就不啰嗦介紹了。
看我眼睛,先聲明,動畫里的政治經(jīng)濟學(xué)和我沒關(guān)系啊,那是老祝干的事,我作證……
再說下VBA的方法……
照例先上操作動畫:
代碼的核心是DIR語句,注釋部分業(yè)已作了解釋,這里就不再啰嗦了。
代碼如下:
Sub FileDir()
Dim p$, f$, k&
'獲取用戶選擇文件夾的路徑
With Application.FileDialog(msoFileDialogFolderPicker)
'選擇文件夾
If .Show Then
p = .SelectedItems(1)
'選擇的文件路徑賦值變量P
Else
Exit Sub
'如果沒有選擇保存路徑,則退出程序
End If
End With
If Right(p, 1) <> '\' Then p = p & '\'
f = Dir(p & '*.*')
'返回變量P指定路徑下帶任意擴展名的文件名
'如果有超過一個文件存在,將返回第一個找到的文件名
'如果一個文件都沒有,則返回空
[a:a].ClearContents '清空A列數(shù)據(jù)
[a1] = '目錄'
k = 1
Do While f <> ''
'如果文件名不為空,則……
k = k + 1
'累加文件個數(shù)
Cells(k, 1) = f
f = Dir
'第二次調(diào)用Dir函數(shù),但不帶任何參數(shù),則將返回同一目錄下的下一個文件。
Loop
MsgBox 'OK'
End Sub
小貼士:
如何用VBA判斷某個文件夾下是否存在名稱為“看見星光”的工作簿?