小生今天上网下载了一个财务常用报表的文件包,里面有几百个excel工作表,要是手工一个一个的获得文件名的话,那我可是要忙十天半月哦。于是想到昨论坛就是vba论坛,昨不充分利用excel
自身的高级应用呀,呵呵,实现的代码如下,把工作量几天的任务可是一下子就完成了,这就是excel
vba给你工作提高效率的结果!
excle vba自动获取同一文件夹下所有工作表的名称红色代码:
按Alt+F11,打开VBA编辑器,插入一个模块,把下面的代码贴进去,按F5执行
Sub t()
Dim s As FileSearch '定义一个文件搜索对象
Set s = Application.FileSearch
s.LookIn = 'c:\' '注意路径,换成你实际的路径
s.Filename = '*.*' '搜索所有文件
s.Execute '执行搜索
Cells.Delete '表格清空
For i = 1 To s.FoundFiles.Count
Cells(i, 1) = s.FoundFiles(i) '每一行第一列填写一个文件名
Next
End Sub
现在获得的可是带路径的工作表名,去掉前的路径可用以下方法;
=RIGHT(A1,LEN(A1)-FIND('#',SUBSTITUTE(A1,'\','#',LEN(A1)-LEN(SUBSTITUTE(A1,'\',)))))
最后用常规的方法往下拖,就完成了笔者所需的工作表名。
本文测试结果如:http://bbs.vbacn.com/read.php?tid=573
excle vba自动获取同一文件夹下所有工作表的名称红色代码:
按Alt+F11,打开VBA编辑器,插入一个模块,把下面的代码贴进去,按F5执行
Sub t()
Dim s As FileSearch '定义一个文件搜索对象
Set s = Application.FileSearch
s.LookIn = 'c:\' '注意路径,换成你实际的路径
s.Filename = '*.*' '搜索所有文件
s.Execute '执行搜索
Cells.Delete '表格清空
For i = 1 To s.FoundFiles.Count
Cells(i, 1) = s.FoundFiles(i) '每一行第一列填写一个文件名
Next
End Sub
现在获得的可是带路径的工作表名,去掉前的路径可用以下方法;
=RIGHT(A1,LEN(A1)-FIND('#',SUBSTITUTE(A1,'\','#',LEN(A1)-LEN(SUBSTITUTE(A1,'\',)))))
最后用常规的方法往下拖,就完成了笔者所需的工作表名。
本文测试结果如:http://bbs.vbacn.com/read.php?tid=573


