vba获取自己添加附件的超链接(VBA递归列出文件并进行超链接)
vba获取自己添加附件的超链接(VBA递归列出文件并进行超链接)图2:插入按钮控件下面就讲一下如何实现这样的功能。1.新建可运行宏的excel文件;2.excel菜单:开发工具->插入->表单控件->按钮控件,如图2所示。
VBA递归列出文件并进行超链接
工作中经常需要打开文件夹查找文件,包括子文件夹中的文件,有时我们忘记放在了哪个文件夹中了,用电脑自带搜索又比较慢,不记得文件名称也无法使用everything软件,查找文件浪费时间。用excel自带VBA,简单实现了这样的功能,就是列出文件夹包括子文件夹中的所有文件,并以超链接的形式显示到excel单元格中,如图1所示。点击打开,即可打开相关的文件,直接查看文件内容,比较方便。
图1:列出文件并超连接
下面就讲一下如何实现这样的功能。
1.新建可运行宏的excel文件;
2.excel菜单:开发工具->插入->表单控件->按钮控件,如图2所示。
图2:插入按钮控件
3.对按钮1,右键->指定宏->编辑,弹出VBA编译器对话框,如图3所示;
图3:VBA编译器
4.把附录1代码copy到VBA模块中,如图4所示,然后保存。点击图2中的按钮,则可实现图1中的效果;
图4:VBA代码
附录1:代码
Sub 按钮1_Click()
Sheet1.Cells.Clear
Dim fs As Object
Dim floder As Object
Dim filename As Object
Dim mydir As String
mydir = ThisWorkbook.Path
Set fs = CreateObject("scripting.filesystemobject")
Set floder = fs.getfolder(mydir)’打开excel所在位置的文件夹
Call serachfiles(floder)’调用递归函数
End Sub
Sub serachfiles(ByVal fd As Object)’递归函数
Dim fl As Object
Dim sfd As Object
Dim b1 As Integer
b1 = Sheet1.Range("A65536").End(xlUp).Row
For Each fl In fd.Files’列出当前文件夹中的文件,并进行超级连接
b1 = b1 1
Sheet1.Cells(b1 1) = fl.Name
ActiveSheet.Hyperlinks.Add anchor:=Sheet1.Cells(b1 2) Address:=fl.Path TextToDisplay:="打开"
Next fl
If fd.subfolders.Count = 0 Then’若没有子文件,则跳出程序
Exit Sub
End If
For Each sfd In fd.subfolders’逐个扫描子文件夹,调用本程序。
Call serachfiles(sfd)
Next
End Sub
私信可以交流EXCEL VBA的知识,也可获得本程序的电子版。