ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何将文件夹及子文件夹的文件做成目录?

如何将文件夹及子文件夹的文件做成目录?

作者:绿色风 分类: 时间:2022-08-17 浏览:142
楼主
wqfzqgk
Q:如何将文件夹及子文件夹的文件做成目录?
A:用递归的方式将文件夹及子文件夹中的文件导入到EXCEL中,再将导入的文件加上链接及文件大小等
文件目录.rar

  1. Sub CreateMBCMenu()'创建菜单
  2.     On Error GoTo Err_Handler'有错误执行到Err_Handler
  3. '定义变量
  4.     Dim MyMnu As CommandBarControl
  5.     Dim MyCtrl(1 To 1) As CommandBarControl
  6.     Dim i As Integer
  7.     Call DeleteMBCMenu'先删除菜单,如果有的话
  8.     Set MyMnu = Application.CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup, Temporary:=True)'创建菜单
  9.     With MyMnu
  10.         .Caption = "文件目录"
  11.         .BeginGroup = False
  12.         .Enabled = True
  13.         .Visible = True
  14.     End With
  15.     Set MyCtrl(1) = MyMnu.Controls.Add(Type:=msoControlButton, Temporary:=True)
  16.     With MyCtrl(1)
  17.         .BeginGroup = False
  18.         .Caption = "文件目录"
  19.         .Enabled = True
  20.         .Visible = True
  21.         .Style = msoButtonCaption
  22.         .OnAction = "folder"
  23.     End With
  24.     For i = 1 To 1
  25.         Set MyCtrl(i) = Nothing'销毁
  26.     Next i
  27.     Set MyMnu = Nothing
  28.     Exit Sub
  29. Err_Handler:
  30.     MsgBox Err.Description, vbExc**tion
  31. End Sub
  32. '删除自定义菜单
  33. Sub DeleteMBCMenu()
  34. On Error Resume Next
  35.     Application.CommandBars("Worksheet Menu Bar").Controls("文件目录").Delete
  36. End Sub
  37. Sub CreateMBCBar()'创建工具栏
  38.     On Error GoTo Err_Handler
  39.     Dim MyBar As CommandBar
  40.     Dim MyCtrl(1 To 1) As CommandBarControl
  41.     Dim i As Integer
  42.     Call DeleteMBCBar
  43.     Set MyBar = Application.CommandBars.Add(Name:="文件目录", Temporary:=True)
  44.     MyBar.Visible = True
  45.     Set MyCtrl(1) = MyBar.Controls.Add(Type:=msoControlButton, Temporary:=True)
  46.     With MyCtrl(1)
  47.         .BeginGroup = False
  48.         .Caption = "文件目录"
  49.         .Enabled = True
  50.         .Visible = True
  51.         .Style = msoButtonCaption
  52.     End With
  53.     For i = 1 To 1
  54.         Set MyCtrl(i) = Nothing
  55.     Next i
  56.     Set MyBar = Nothing
  57.     Exit Sub
  58. Err_Handler:
  59.     MsgBox Err.Description, vbExc**tion
  60. End Sub
  61. '删除自定义工具栏
  62. Sub DeleteMBCBar()
  63. On Error Resume Next
  64.     Application.CommandBars("文件目录").Delete
  65. End Sub
  66. Sub folder()
  67. Cells.Clear '清除当前表的内容
  68. Dim folder As FileDialog '定义变量
  69. Set folder = Application.FileDialog(msoFileDialogFolderPicker) '取浏览窗口之文件夹名称
  70. With folder
  71. .AllowMultiSelect = False '多选取消
  72. If .Show = -1 Then folderpath = .SelectedItems(1) '当前所选文件夹
  73. End With
  74. Call ShowFolderList(folderpath) '调用ShowFolderList显示当前文件夹中的文件
  75. Call subfolder(folderpath) '调用ShowFolderList显示当前文件夹子文件夹中的文件
  76. '当前工作表中
  77. Range("a1") = "所在文件夹/文件名:/大小/最后修改时间/类型" '为A本赋值
  78.     Columns("a:a").Select '选择A列
  79.     '以下为A列分列操作
  80.     Selection.TextToColumns Destination:=Range("A1"),  OtherChar :="/"
  81.         'A到G列自动列宽
  82.         Columns("a:g").AutoFit
  83. End Sub
  84. Sub subfolder(folderpath)
  85. If folderpath <> "" Then
  86. Set fs = CreateObject("scripting.filesystemobject") '创建调用脚本
  87. Set f = fs.GetFolder(folderpath) '调用文件夹中的子文件夹
  88. Set fss = f.SubFolders
  89. For Each subf In fss
  90. subfolder (subf) '递归调用
  91. ShowFolderList (subf) '调用子程序显示子文件夹中文件
  92. Next
  93. Else
  94. Exit Sub
  95. End If
  96. End Sub
  97. Sub ShowFolderList(folderspec)
  98. On Error Resume Next
  99.     Dim fs, f, f1, fc, s
  100.     Set fs = CreateObject("Scripting.FileSystemObject")
  101.     Set f = fs.GetFolder(folderspec)
  102.     Set fc = f.Files
  103.   If fc.Count <> 0 Then
  104.      Set d = CreateObject("scripting.dictionary")
  105.     For Each f1 In fc
  106.     d.Add f1.ParentFolder & "/" & f1.Name & "/" & Int(f1.Size / 1024) & "KB" & "/" & f1.DateCreated & "/" & f1.Type, ""
  107.     Next
  108.     Range("a" & [a65536].End(xlUp).Row + 1).Resize(fc.Count, 1) = WorksheetFunction.Transpose(d.keys)
  109.    Else
  110.     Exit Sub
  111.     End If
  112.     Set d = Nothing
  113.     Set e = Nothing
  114.     Set f = Nothing
  115. End Sub
2楼
wangzhongtu
收藏了
3楼
7786910
观摩学习。
4楼
UXUXUX
有视频吗?版主可以发个视频学下吗
5楼
飝嬿尐愺
感谢一下,先去试试看,好用不?
6楼
wpppj
好东西,能提取出全部的文件并罗列出来,没办法把每个文件夹的内容分类
7楼
akinoru
这个小东西很方便
列出目录下文件.rar
8楼
gysegz
怎么不能自动链接呀
9楼
qinhuan66
好好学习天天向上
10楼
kszcs
收藏,学习
11楼
icenotcool


12楼
icenotcool

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap