批量提取文件夹名称到excel

这问题比较模糊,没有具体说明提取文件里面的什么内容 。
不过我写一个根据简单的框架,如果有能力的话,题主可根据VBA来修改 。


1、在桌面新建一个文件夹,文件夹里新建几个Excel工作簿文件 。
批量提取文件夹名称到excel

2、在一个新的xlsm工作簿中 , 写入要提取的文件名称 。
批量提取文件夹名称到excel

该xlsm文件和数据源Excel文件放在同一文件夹内
批量提取文件夹名称到excel

3、VBA代码参考,放在vbe窗口同一个模块 。
批量提取文件夹名称到excel

文字代码为,可复制粘贴:
Sub doloop() ‘遍历当前路径所有文件
Dim sFName As String ‘文件名称
Dim sPath As String ‘路径
‘//根据实际路径和文件类型而修改
sPath = ThisWorkbook.Path & “” ‘路径,不包含文件名称和文件类型
Application.ScreenUpdating = False
Application.DisplayAlerts = False
‘//假设已经知道文件的名称以及文件夹内文件的类型
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
sFName = sPath & Cells(i, 1) & “.xlsx” ‘全路径:文件名称+文件类型
If FileExists(sFName) = True Then ‘如果文件存在
Cells(i, 2) = “存在” ‘则在B列标记存在,否则空白
Else
Cells(i, 2) = “”
End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Private Function FileExists(fname) As Boolean ‘判断工作簿是否存在
‘ 如果工作簿存在,则返回True
Dim x As String
x = Dir(fname)
If x <> “” Then FileExists = True _
Else FileExists = False
End Function
结果为:
批量提取文件夹名称到excel


套路Excel
由于提问者没有给出具体案例,所以我首先设定一个符合日常场景和习惯的情景:
如下图,在“D:原文件”文件夹下有若干个文件,文件格式不作限制;在某个Excel文件中 , 存在一个文件名称列表 , 包含了上述文件夹下一部分文件的名称 。
对于提取文件夹内的文件,我们定义为将列表中的文件复制到另一个文件夹中 。
批量提取文件夹名称到excel

问题解决思路:
由于是对文件进行批量提?。?所以可以运用批处理的思想,具体工具可以选择bat批处理脚本,它有三个优势:
【批量提取文件夹名称到excel】
一、语法简单:如果只是对文件层面的复制粘贴剪切等操作的话,基本没有学习成本;
二、使用方便:可以在记事本中直接编写,在windows下直接运行;
三、从计算机底层运行,效率要高于普通应用软件 。
Step 1:写出批处理命令
bat批处理复制文件的基本语法是:
copy 含完整路径的文件名 要复制到的文件夹路径
所以首先在excel中批量生成批处理命令,由于每条命令中不同的部分是文件名不同,其余部分全部相同,所以可以分段写好再文本合并 。
在A列写“copy D:原文件”,注意copy后面有空格 。在C列写“ D:提取出来的文件”,注意最前面有空格,在D列输入公式“=A2&B2&C2”将ABC三列文本合并 。将以上三列向下填充至最后一行,批处理命令就生成到了D列 。
批量提取文件夹名称到excel

最后不要忘记在D盘下记得新建一个文件夹,并命名为“提取出来的文件” 。
Step 2:制作批处理文件并运行
在电脑中任意位置新建一个文本文档,将D列内容复制粘贴进去 , 保存关闭后将文件名改为“提取文件.bat” 。
批量提取文件夹名称到excel

直接双击打开bat文件,它会自动运行,稍等两秒,打开“D:提取出来的文件”文件夹,可以看到,想要提取的文件已经被复制到这个文件夹中了 。
批量提取文件夹名称到excel

总结:
本例中借助bat实现了文件的批处理 , 其中又借助excel的功能批量生成了命令语句,瞬间实现了想要的结果 。所以,精准选择相应的软件或工具并综合运用,效率才能最大化 。

「精进Excel」系头条签约作者,关注我,如果任意点开三篇文章,没有你想要的知识,算我耍流氓!

经验总结扩展阅读