WPS宏技巧:递归获取文件夹及子文件夹中所有文件名并生成超链接 点击使用AI助手 了解更多

发布于 2024-11-30 liusiyang 311 编辑

AI 智能搜索

基于灵犀AI办公助手生成
完整内容,请前往灵犀查看

上期我们讲了《JS宏选择文件夹,获取所有文件名并生成超链接》,有小伙伴问能不能连同子文件夹中的文件名也一并获取,下面安排。

【运行效果】

选择文件夹,获取文件夹(含子文件夹)中的所有文件名称,并为每个文件生成超链接。

【JSA代码】

按ALT+F11打开WPS宏编辑器,复制下方代码粘贴到编辑器中。

👉

function 获取子文件夹中的所有文件名(){

//获取文件对话框

var ph=Application.FileDialog(msoFileDialogFolderPicker);

Application.ScreenUpdating=false;//设置屏幕不刷新

ph.Show();//显示对话框

var PH=[...ph.SelectedItems];//把选中的文件夹名取成一个数组

if(PH.length==0){return;}//如果没有选择,退出

var FileNames=[];//用来存放所有文件名,最终要的数据

var GetAllFileName=(path)=>{//递归函数

if(path.length==0){return;}//如果传回的参数为空,结束递归

var temparr=[];//空数组用来保存文件夹的名字

path.forEach(i=>{//循环传进来的文件夹获取里面的文件名

var f=Dir(i+"\\",16);//第一次获取,文件夹名和文件名

while(f!=""){

if(f!="."&&f!=".."){ //避开根目录

//如果是文件夹放进临时数组

if(GetAttr(i+"\\"+f)!=32&&GetAttr(i+"\\"+f)!=1056){

temparr.push(i+"\\"+f+"\\");

}else{

//如果是文件名,则构建为超链接公式,放到最终数组

FileNames.push(['=HYPERLINK(\"'+i+'\\'+f+'\")']);

}

}

f=Dir();//下一次获取

}

})

return GetAllFileName(temparr);//把获取到的文件夹名称传回,并回调

}

GetAllFileName(PH);//第一次调用。

Range("a:a").Value2=null;//清空A列

//输出文件名

Range("a1").Resize(FileNames.length,1).Value2=FileNames;

}

【素材下载】

https://kdocs.cn/l/cpkHrilO4ade

原文链接:https://bbs.wps.cn/topic/13234

上一篇: WPS从入门到熟练的快速指南
下一篇: 提升办公效率的利器:WPS Office全面介绍
相关文章
×