ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖

WPS宏获取文件夹名称怎么写

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-25 11:52 | 显示全部楼层
这个方法貌似达不到递归的效果吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-25 11:56 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
everbest2015 发表于 2024-10-25 11:50
我有个疑问  要是你的子文件夹里面还有子文件夹,这种很多层文件夹嵌套的情况下 这个代码还适用吗

没有用,只适用一层

TA的精华主题

TA的得分主题

发表于 2024-10-25 11:57 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-25 12:36 | 显示全部楼层
本帖最后由 opiona 于 2024-10-27 18:51 编辑

做了简单升级, 去掉了字典的使用
  1. //函数: ListFolderToArr 指定文件夹 的子文件夹清单 到向下到第几层子文件
  2. function ListFolderToArr(PathFolder,SubFolder= 0,StrSplitor= "\"){
  3.         //函数: ListFolderToArr 指定文件夹 的子文件夹清单 到向下到第几层子文件
  4.         //参数: PathFolder      需查找的文件夹路径,不包含文件名
  5.         //参数: SubFolder       可选,向下到第几层子文件夹,可省略,默认为:0 就是全部
  6.         //参数: StrSplitor      可选,各级文件夹分隔符
  7.         //方法: let pathArr=ListFolderToArr(PathFolder,0)
  8.         //整理:  北极狐工作室 QQ:14885553
  9.        
  10.         let X,folder,path,folderA,file,strTemp
  11.         let ArrayOut=[];
  12.         folder=PathFolder    //防止参数值因为函数而产生变化 用一个局部变量代替
  13.         folder = folder.replace(/(\\|\/)$/, "");        //去除最后一个正斜杠或者反斜杠(如果存在的话)
  14.         folder = folder.replace(/\//g, "\");            //全部 正斜杠 弄成 反斜杠
  15.        
  16.         //FileSystem.readdirSync(path)  //只提取第一层
  17.     if(folder.length>0){
  18.                 let pathArr = []     //空白数组备用 放文件名
  19.             let queue = [folder] //入队 将一个元素放入数组中 放文件夹名  
  20.                 while (queue.length > 0) {
  21.                         folderA = queue.shift()         //出队 删除数组的第一个元素,并返回被删除的元素
  22.                         pathArr.push(folderA)     //入队 向数组的末尾添加一个或多个元素,并更新数组的长度   
  23.                         file = Dir(folderA + "\\*", jsDirectory);  //jsDirectory=16  指定文件夹内的全部文件和子文件夹
  24.                         while(file != "") {                                                //遍历当前层级文件
  25.                                 if(file != "." && file != ".."){        //排除"."与".."
  26.                                         path = folderA +"\"+ file        //文件或文件夹的绝对路径       
  27.                                         if(GetAttr(path) == jsDirectory){  //是否为文件夹
  28.                                                 strTemp=path.replace(folder +"\","") //去掉更目录路径 后 还有几个 \ 就是第几层
  29.                                 if(strTemp.split("\").length<= SubFolder || SubFolder == 0){
  30.                                         queue.push(path)  //是就入队   
  31.                                         if(StrSplitor!= "\"){
  32.                                                 path=path.replace(/\\/g, "/");  //全部 正斜杠 弄成 反斜杠
  33.                                         }
  34.                                         ArrayOut.push(path)   //放入数组,可能用重复值
  35.                                                 }
  36.                                         }
  37.                                 }
  38.                                 file = Dir(); //下一个文件
  39.                         }
  40.                 }
  41.         }
  42.         if(ArrayOut.length==0){
  43.                 ArrayOut[0]=""
  44.     } else {
  45.                 ArrayOut=[...new Set(ArrayOut)];  //一维数组去重   ES6新的数据结构
  46.         //ArrayOut=ArrayOut.filter((item, index, ArrayOut) => ArrayOut.indexOf(item) == index);  //一维数组去重
  47.                 ArrayOut.sort()
  48.     }
  49.         return ArrayOut
  50. }
复制代码

TA的精华主题

TA的得分主题

发表于 2024-10-25 14:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
everbest2015 发表于 2024-10-25 11:57
是的  我理解的你应该是递归那种

image.png

TA的精华主题

TA的得分主题

发表于 2024-10-25 16:28 | 显示全部楼层
本帖最后由 Again123456 于 2024-10-25 16:57 编辑

只看了标题,没看到要子目录,那样只好递归了,楼上铭佬已经给了代码了



fds.png

TA的精华主题

TA的得分主题

发表于 2024-10-25 20:50 | 显示全部楼层
本帖最后由 opiona 于 2024-10-25 22:58 编辑

刚学JS  看到 箭头函数  =>  就晕的一匹

TA的精华主题

TA的得分主题

发表于 2024-10-27 18:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

GetAttr(res.at(-1)) & 16 && listdir(res.at(-1)),结果正确,请你讲讲理论

TA的精华主题

TA的得分主题

发表于 2024-10-27 19:28 | 显示全部楼层
opiona 发表于 2024-10-25 20:50
刚学JS  看到 箭头函数  =>  就晕的一匹

我跟你刚好相反,我非常喜欢箭头函数,反而是定义Function这样子的我头痛
箭头函数非常好用,你不用管它,就当它是一种语法,箭头后面{}里面就是你要写的代码

TA的精华主题

TA的得分主题

发表于 2024-10-27 20:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
A刘志勇 发表于 2024-10-27 18:05
GetAttr(res.at(-1)) & 16 && listdir(res.at(-1)),结果正确,请你讲讲理论

https://club.excelhome.net/forum ... amp;_dsign=4ddfa433  8楼
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:43 , Processed in 0.040756 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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