excel宏:列出一个目录下所有文件,并做也超链接
来源:互联网 发布:ora27102 windows 编辑:程序博客网 时间:2024/05/16 19:25
从网上找了一些信息,自己修改了一下
方式很直白,先把所有的目录找了出来,然后一个个目录来处理。
虽然与我习惯使用迭代的的方式有所差别,但也很好。
后面的函数是原始的,没有改动,主函数自己重新写过了。
文件下载
'主函数 Sub ListFilesInCurFolder() '//函数实例 Cells(1, 1) = "序号" Cells(1, 2) = "文件名称" Cells(1, 3) = "文件类型" Cells(1, 4) = "路径"Dim strCurfileNameDim CurRowCurRow = 2 arr = FileAllArr(ThisWorkbook.Path, "*.*", ThisWorkbook.Name) For I = 0 To UBound(arr) ' MsgBox arr(I) 'Set WB = Workbooks.Open(arr(I)) '你的代码 'WB.Close False 'lj = "E:\ToolDev\ExcelTools\ListFileInFolder\test" Dim wj As String 'wj = Dir(lj & "\*.*") Dim idx As Integer idx = InStrRev(arr(I), "\") If idx >= 0 Then strCurfileName = Mid(arr(I), idx + 1, Len(arr(I))) Else strCurfileName = arr(I) End If 'Cells(([A65536].End(xlUp).Row + 1), 1) = [A65536].End(xlUp).Row ' Cells(([C65536].End(xlUp).Row + 1), 3).FormulaR1C1 = "=MID(RC[-1],FIND(""."",RC[-1])+1,LEN(RC[-1]) - FIND(""."",RC[-1]))" ' Cells(([B65536].End(xlUp).Row + 1), 2).Select Cells(CurRow, 1) = CurRow - 1 Cells(CurRow, 3).FormulaR1C1 = "=MID(RC[-1],FIND(""."",RC[-1])+1,LEN(RC[-1]) - FIND(""."",RC[-1]))" Cells(CurRow, 2).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=arr(I), TextToDisplay:=strCurfileName '相对路径,但证明无用,绝对路径,在excel中,会被自动转为相对路径 'Cells(CurRow, 4).Select 'Dim RefPath 'RefPath = Mid(arr(I), Len(ThisWorkbook.Path) + 2, Len(arr(I))) 'ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=RefPath, TextToDisplay:=strCurfileName ''''''''''''' Cells(CurRow, 4).Select Dim CurFolder CurFolder = Left(arr(I), idx) CurFolder = Mid(CurFolder, Len(ThisWorkbook.Path) + 2, Len(CurFolder)) Cells(CurRow, 4) = CurFolder CurRow = CurRow + 1 Next Columns("A:C").Select Columns("A:C").EntireColumn.AutoFit End Sub '**************************************************************** '功能: 查找指定文件夹含子文件夹内所有文件名(含路径) '函数名: FileAllArr '参数1: Filename 需查找的文件夹名 不含最后的"\" '参数2: FileFilter 需要过滤的文件名,可省略,默认为:[*.*] '参数3: Liwai 剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name '返回值: 一个字符型的数组 '使用方法:arr = FileAllArr(ThisWorkbook.Path, "*.xls", ThisWorkbook.Name) Public Function FileAllArr(ByVal Filename As String, Optional ByVal FileFilter As String = "*.*", Optional ByVal Liwai As String = "") As String() Set Dic = CreateObject("Scripting.Dictionary") '创建一个字典对象 Set Did = CreateObject("Scripting.Dictionary") Dic.Add (Filename & "\"), "" I = 0 Do While I < Dic.Count Ke = Dic.keys '开始遍历字典 MyName = Dir(Ke(I), vbDirectory) '查找目录 Do While MyName <> "" If MyName <> "." And MyName <> ".." Then If (GetAttr(Ke(I) & MyName) And vbDirectory) = vbDirectory Then '如果是次级目录 Dic.Add (Ke(I) & MyName & "\"), "" '就往字典中添加这个次级目录名作为一个条目 End If End If MyName = Dir '继续遍历寻找 Loop I = I + 1 Loop I = 0 Dim arrx() As String For Each Ke In Dic.keys '以查找总表所在文件夹下所有excel文件为例 MyFileName = Dir(Ke & FileFilter) '过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsx Do While MyFileName <> "" If MyFileName <> Liwai Then '排除例外文件 ReDim Preserve arrx(I) arrx(I) = Ke & MyFileName I = I + 1 End If MyFileName = Dir Loop Next FileAllArr = arrx End Function '**************************************************************** 'Sub g1() ' Dim fso, fl, m& ' Set fso = CreateObject("Scripting.FileSystemObject") ' For Each fl In fso.getfolder(CreateObject("Shell.Application").BrowseForFolder(0, "请选择文件夹", 0, "").Self.Path & "\").Files ' m = m + 1 ' Cells(m, 2) = fl.Name ' Next ' End Sub
文件下载
0 0
- excel宏:列出一个目录下所有文件,并做也超链接
- 列出一个目录下的所有文件
- 1.1 列出一个目录下的所有文件
- python 列出文件目录下所有文件
- 01列出一个目录中的所有文件
- 列出一个目录中的所有文件
- tomcat中列出目录下所有文件
- 列出某个目录下的所有文件
- tomcat中列出目录下所有文件
- 批处理之列出目录下所有文件
- 列出目录下的所有文件
- 列出某目录下所有文件
- 递归列出目录下的所有文件
- python列出目录下所有的文件
- java列出目录下的所有文件
- java列出目录下的所有文件
- 列出某个目录下的所有文件和列出某目录下所有的子目录
- Java_IO_列出一个目录的所有文件和目录
- java内部类
- 关于vector::size 异常的一点经验
- 如何将驱动程序静态编译进内核
- linux下批量替换文件内容
- html dl dt dd标签元素语法结构与使用
- excel宏:列出一个目录下所有文件,并做也超链接
- VLD调试介绍
- Jsp论坛系统(BBS)源码
- linux下彻底删除oracle
- poj_1028 Web Navigation
- Elasticsearch、MongoDB和Hadoop比较
- 本文出自大苞米的博客(http://blog.csdn.net/a396901990)
- 水平居中与垂直居中的区别
- springmvc、jpa、spring、mongodb和ehcache整合框架demo