ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1818|回复: 8

[讨论] 读出 路径下 所有的文件夹 及 文件名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-1 09:01 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 丢丢表格 于 2018-3-1 09:05 编辑

  昨日有同事让我给他写一个宏,要求读出所有文件名。不知是否合要求,所以呈来讨论。     它同于 早些年前的 DIR
(读出 路径下 所有的文件夹 及 文件名,路径一定要完整。可以 从 地址栏用复制的方法 把路径粘帖过来。)



复制代码

Sub test()
    Dim t As Byte
    Dim x As String
    Dim d As String
    x = InputBox("请录入完整的路径")
    Range("a:g").ClearContents
    mypath = x & "\"
    d = Dir(mypath, vbDirectory)
    t = 1
    While d <> ""
        d = Dir
        Cells(t + 3, 3) = d
        t = t + 1
    Wend
       Cells(2, 3) = x
End Sub

TA的精华主题

TA的得分主题

发表于 2018-3-1 11:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Dim w(1 To 10000)
  2. Dim s As Long
  3. Sub 导入文件()
  4.     Application.ScreenUpdating = False
  5.     s = 0
  6.     Erase w
  7.     'On Error Resume Next

  8.     '** 使用FileDialog对象来选择文件夹
  9.     Dim fd As FileDialog
  10.     Dim strPath As String
  11.     Set fd = Application.FileDialog(msoFileDialogFolderPicker)   ' 显示选择文件夹对话框
  12.     fd.InitialFileName = ThisWorkbook.Path & ""       '设置默认路径
  13.     If fd.Show = -1 Then        '** 用户选择了文件夹
  14.         strPath = fd.SelectedItems(1)
  15.     Else
  16.         strPath = "": Exit Sub
  17.     End If
  18.     Set fd = Nothing
  19.     '************
  20.    
  21.     zdir strPath         '递归所选文件夹内所有子文件夹内文件名,放入数组w
  22.     Range("b2").Resize(10000) = Application.Transpose(w)
  23.     Application.ScreenUpdating = True
  24. End Sub


  25. Sub zdir(p)       '递归获得本文件夹及所有子文件夹内文件名
  26.   Set fs = CreateObject("scripting.filesystemobject")
  27.   For Each f In fs.GetFolder(p).Files
  28.     If f <> ThisWorkbook.FullName Then s = s + 1: w(s) = f
  29.   Next
  30.   For Each m In fs.GetFolder(p).SubFolders
  31.       zdir m
  32.   Next
  33. End Sub


  34. '使用filesystemobject获得所有文件夹和子文件夹的名称
  35. Sub zdir1(strpath)
  36. Set fso = CreateObject("scripting.filesystemobject")
  37. For Each f In fso.getfolder(strpath).subfolders
  38. '    If f <> ThisWorkbook.Path Then
  39.        w(s) = f: s = s + 1
  40.        zdir1 f
  41. '    End If
  42. Next
  43. 'For Each m In fso.getfolder(strpath).subfolders
  44. '   zdir m
  45. 'Next
  46. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-1 12:47 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-3-1 13:08 编辑

不是要选定目录,而是通过 文本对话 录入路径,只读目录下级的 文件名。
如 录入 C:    就是读出 C:\  下的所有目录 ,不需读出 C:\*\ 以下的目录。
  谢谢你的回答,

  我写的 句子已经 符合要求,只是语句上是否合理的问题。
无标题.png
无标题2.png

TA的精华主题

TA的得分主题

发表于 2018-3-1 12:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
丢丢表格 发表于 2018-3-1 12:47
不是要选定目录,而是通过 文本对话 录入路径,只读目录下级的 文件名。
如 录入 C:    就是读出 C:\ ...

可以的,没有什么问题的

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-1 13:01 | 显示全部楼层
本帖最后由 丢丢表格 于 2018-3-1 13:19 编辑
文刀天可 发表于 2018-3-1 12:58
可以的,没有什么问题的

请看 3 楼的示图
每一天做完业务后,需要对文件及 文件夹 有一个记录 。(每天都有增删内容)
  因为过去 都是靠截屏得到的 图片 ,图片多后 数据量庞大,所以写个宏来用数据储存,便于查阅 和 减少存储空间。

TA的精华主题

TA的得分主题

发表于 2018-3-1 16:18 | 显示全部楼层
Sub lqt()

Dim ay(1 To 10000)
'x = "C:\"
x = ThisWorkbook.Path & "\"
f = Dir(x & "*.???")
Do While f <> ""
    If f <> ThisWorkbook.Name Then
        m = m + 1
        ay(m) = f
    End If
    f = Dir
Loop
Range("a65535").End(xlUp).Offset(1).Resize(m) = Application.Transpose(ay)
End Sub

TA的精华主题

TA的得分主题

发表于 2018-3-1 16:49 | 显示全部楼层
本帖最后由 王子熙 于 2018-3-1 16:59 编辑

原来帮别人写的  为了批量改一个文件夹下 所有文件的名字(包括多级文件夹)       这个主要是得到路径似的 目录   方便以路径找文件改名   不喜勿喷

2003.7z

15.36 KB, 下载次数: 31

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-2 09:18 | 显示全部楼层
6688 发表于 2018-3-1 16:18
Sub lqt()

Dim ay(1 To 10000)

谢谢你的回答,  
你这个是 只读出文件名,没能读出文件夹的,(我要的是也能读出文件夹名的)

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-2 09:22 | 显示全部楼层
王子熙 发表于 2018-3-1 16:49
原来帮别人写的  为了批量改一个文件夹下 所有文件的名字(包括多级文件夹)       这个主要是得到路径似的 ...

你编写    '获取文件夹下所有文件和文件夹名称
这个可以取用 。
    学习了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-26 22:22 , Processed in 0.046955 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表