165、Excel宏表函数三---FILES函数
165、Excel宏表函数三---FILES函数
有时我们需要返回指定目录下所有的文件名,自动获取指定目录下所有的文件名可以使用VBA。这里介绍另外的两种方法。如下图所示,"D:\图纸"文件夹下存放了许多文件,现在要获取文件夹下(包含子文件夹)所有文件的名称。打开一个记事本,在记事本中输入以下语句,然后保存成txt文件。在“文件夹”选项的“查看”设置下,将“隐藏已知文件类型的扩展名”前边的√去掉,也就是显示文件类型。然后将保存的TXT文件的扩展名改为bat。如下图所示:然后双击这个bat文件即可生成文件名了。文件保存在D盘,名称为“a”如果是想获取当前目录(bat文件所在文件夹)下所有文件名,则可以将txt文件的语句改为“dir *.*/b>图号名称清单.xls”,保存后更改文件扩展名为bat即可。双击运行即可在改文件夹下生成相应的文件名文件。如下图所示:FILES函数用于返回指定目录下的全部文件名,结果为水平方向的数组。函数的参数指定从哪一个目录中返回文件名,支持使用统配符星号(*)和半角问号(?)。如果参数没有指定,则函数返回活动工作簿所在目录下的所有文件名。如果函数的结果有多个元素,输入公式后,结果会溢出到相邻的其它单元格。FILES函数只能返回文件的名称,不能得到文件夹的名称。如果指定的路径不存在或者只包含文件夹而没有任何文件,则函数返回错误值#N/A。 如下图所示,为工作簿“FILES函数.xlsx”文件所在文件夹所有文件。现在获取D盘所有文件的文件名,以及FILES函数文件夹下各类文件的文件名。 | |
| =FILES("D:\*.*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.xls*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.pdf*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.ppt*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.doc*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.*")&T(NOW()) |
| =FILES(GET.DOCUMENT(2)&"\*.jpg*")&T(NOW()) |
因为FILES函数返回的是水平数组,所以使用TOCOL将返回的结果转换为列。各公式返回结果如下图所示:在FILES工作簿中新建一个工作表,输入以下公式: | | |
| | =IFERROR(HYPERLINK(路径&"\"&INDEX(图片名称,ROW()-1),INDEX(图片名称,ROW()-1)),"") |
| | =IFERROR(HYPERLINK(路径&"\"&INDEX(pdf文件,ROW()-1),INDEX(pdf文件,ROW()-1)),"") |
将公式向下拉动复制,直到出现空单元格为止,这样我们就得到了当前文件夹下所有图片和所有pdf文件的超链接,其它文件类型的超链接只需更改文件名称就可以了。结果如下图所示:点击超链接的文件名称就可以直接打开对应的文件了,如下图所示:FILES函数配合HYPERLINK函数的超链接功能,可以文件夹文件多而且杂时,为我们快速创建定位指引,方便我们快速定位到需要的文件。有兴趣的朋友可以试试。最后做一个小小的提醒:因为FILES函数为宏表函数,所以使用其定义名称的工作簿在保存时必须存为“xlsb或者xlsm”也就是启用宏的格式。如果保存为xls或xlsx格式,宏表函数将会被清除。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。