当我们需要提取文件夹内所有文件名称时,一个个复制粘贴太麻烦了,这里有三个方法推荐给大家。
如:提取这个文件夹内的文件名
方法一:
1.打开excel,点击“公式”选项卡,单击“定义名称”按钮,弹出如下对话框
2、在“名称”框中,输入名称“文件名”,在“引用位置”中输入您要查看的文件夹的具体位置 ,如:=files("d:示例*.*"),单击“确定”
3、在任意单元格输入“=INDEX(文件名,ROW(A1))”,向下拖动,直到出现“#REF!”
注意:这种方法只是提取了指定文件夹中包含的单个文件的名称,并未提取里面所包含的子文件夹内文件名称
方法二:
1、在指定的文件夹中新建一个记事本(文本文档)
2、在记事本中输入“DIR /S/B >输入路径和文件文件名.TXT”,然后保存
3、将刚才创建的这个记事本的扩展名改.bat
4、双击打开运行这个.bat文本,得到一个“提取文件名.TXT”的文本
5、打开这个“提取文件名.TXT”文本,就可以看到该文件夹中所有文件、文件夹及子文件夹的路径和文件名
方法三:
新建一个excel文件,同时按下ALT+F11,或从开发工具进入VBA编辑器,在模块内或Sheet1表内粘贴以下代码,选择指定文件夹即可:
Sub 提取指定文件夹内的所有文件名() '含所有子文件夹内的文件
On Error Resume Next
Dim Fso As Object, arrf$(), mf&
Set Fso = CreateObject("Scripting.FileSystemObject")
Call GetFiles(CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件夹", 0, "").Self.Path, Fso, arrf, mf)
Sheet1.[a2].Resize(mf) = Application.Transpose(arrf)
Set Fso = Nothing
End Sub
Private Sub GetFiles(ByVal sPath$, ByRef Fso As Object, ByRef arrf$(), ByRef mf&)
On Error Resume Next
Dim Folder As Object
Dim SubFolder As Object
Dim File As Object
Set Folder = Fso.GetFolder(sPath)
For Each File In Folder.Files
mf = mf + 1
ReDim Preserve arrf(1 To mf)
arrf(mf) = File.Name
Next
For Each SubFolder In Folder.SubFolders
Call GetFiles(SubFolder.Path, Fso, arrf, mf)
Next
Set Folder = Nothing
Set File = Nothing
End Sub