Advertisement

vba获取文件夹下所有文件名_批量提取文件名,快速建立EXCEL工作台文件路径

阅读量:
e28216de-7c14-eb11-8da9-e4434bdf6706.png
e48216de-7c14-eb11-8da9-e4434bdf6706.png

上回书讲述了如何利用EXCEL创建个人工作台(导航与日志)。有人表示自己拥有的文档数量过多,在进行导航时感到十分吃力。无需担心!其实我们还可以迅速获取文件名的方法来实现方便地建立超链接。

延伸阅读:

点墨楼:实用技巧!通过Excel快速搭建导航菜单和记录日志来处理日常事务

e88216de-7c14-eb11-8da9-e4434bdf6706.png

1. 无门槛通用bat法——用批处理脚本提取文件名

> >>>提取当前文件夹下的文件、文件夹名称(不含子文件夹)

新建一个文本文档,命名为“提取文件名”。

打开文本文档,输入公式:**dir ./b >文件清单.txt **

eb8216de-7c14-eb11-8da9-e4434bdf6706.png

dir采用列表形式;-b参数用于提取仅包含文件名及后缀的信息;>指定了输出结果的存储位置。

将文本文档的文件扩展名为bat格式,并将其命名为'提取文件名.bat'。如果发现你的电脑无法显示或复制包含有隐藏的Windows系统扩展名,请考虑将该文档另存为一个名为'提取程序.exe'或'提取程序可执行版本.exe'等名称并保存为BAT格式后再重新打开查看是否能正确显示或复制这些隐藏系统属性信息?

注:bat文件就是批处理文件,DOS年代的命令,不挑系统。

双击bat文件运行,即可得到文件清单:

ef8216de-7c14-eb11-8da9-e4434bdf6706.png

> >>>提取当前文件夹下的文件、文件夹名称(包括子文件夹),输出文件树

上述方法有时候并不能完全满足我们的需求

能不能通过某种途径来获取文件夹内所有文件的名称? 是的! 不仅可以通过这种方式来实现提取文件名。

步骤同上,公式替换成:**tree /F > 文件树1.txt **

f08216de-7c14-eb11-8da9-e4434bdf6706.png

运行结果如下:

f18216de-7c14-eb11-8da9-e4434bdf6706.png

瞧,我就在某人的电脑下发现了秘密文件(上图倒数第三行),抓他个现行。

点开一看

.

.

.

.

.

.

.

f28216de-7c14-eb11-8da9-e4434bdf6706.png

这什么标题党?

> >>>仅提取当前文件夹名称(包含子文件夹)

步骤同上,公式替换成:tree > 文件树2.txt

f48216de-7c14-eb11-8da9-e4434bdf6706.png

运行结果如下(不提取文件的名称):

f78216de-7c14-eb11-8da9-e4434bdf6706.png

方法小结:

f98216de-7c14-eb11-8da9-e4434bdf6706.png

对于这三种方法而言, 输出文件类型是可以更改的. 具体来说, 在将扩展名为" . txt "的时候,默认会生成相应的文档; 如果将其转换为" . xls ", 则会创建一个Excel表格.

2. WIN10党福利——复制路径

新系统带来新功能,WIN10系统可以直接选中文件,复制路径。

ff8216de-7c14-eb11-8da9-e4434bdf6706.png

粘贴到EXCEL表格中:

028316de-7c14-eb11-8da9-e4434bdf6706.png

EXCEL 2016及以上版本可以用快速填充命令,得到文件名。

048316de-7c14-eb11-8da9-e4434bdf6706.png

EXCEL版本低也没关系,可以用替换,将“文件名之前的路径”替换为“空”。

058316de-7c14-eb11-8da9-e4434bdf6706.png

3. 高阶VBA大法——用EXCEL提取文件名

这两种方法都具有简便的操作性,
然而存在一个局限性,
即每当文件发生更新时,
必须再次执行相应的批处理操作,
最终还需将结果导入EXCEL进行处理。

能不能将更简单一点?
可以,用EXCEL的VBA功能即可。

Visual Basic for Applications(VBA)是一种由Microsoft开发的powerful scripting language. EXCEL掌握使用VBA就意味着打开了通往高级功能的大门.

具体方法:

1)插入一个长方形,输入名称,然后制定宏。(此步骤是为了方便运行,非必须)

098316de-7c14-eb11-8da9-e4434bdf6706.png

2)新建宏。

0b8316de-7c14-eb11-8da9-e4434bdf6706.png

3)将下面的代码复制代码框中:

Sub 获取文件夹路径()
On Error JumpTo 100
Dim wsh As Object, mypath As String, ar, i&, br
mypath = CreateObject("shell.application").BrowseForFolder(0, "请选择要搜索的文件夹", 0).Items.Item.Path '在此指定目录
wsh = CreateObject("wscript.shell")
mypath = wsh.exec("cmd /c tree /f " & Chr(34) & mypath & Chr(34)).StdOut.ReadAll
mypath = Left(mypath, Len(mypath) - 1)
ar = Split(mypath, vbCrLf)
ReDim br(1 To UBound(ar) + 1, 1 To 1)
For i = 0 To UBound(ar)
br(i + 1, 1) = ar(i)
Next
Range("a1").Resize(UBound(br)) = br
wsh = Nothing
JumpTo 100:
End Sub

以上代码来自EXhome论坛@yangyangzhifeng(研习VBA编程具有一定难度,并且网上提供了丰富的代码资源供借鉴)

0f8316de-7c14-eb11-8da9-e4434bdf6706.png

4)点击长方形按钮运行,选择制定提取文件树的文件夹。

118316de-7c14-eb11-8da9-e4434bdf6706.png

得到文件树:

148316de-7c14-eb11-8da9-e4434bdf6706.png

同样地,我们可以编写代码来单独提取文件名(如同dir批处理命令的效果),下次一期内容中。

总结

158316de-7c14-eb11-8da9-e4434bdf6706.png

文件名提取成功了,那如何快速建立超链接呢?且听下回分解!

全部评论 (0)

还没有任何评论哟~