初学JSA 改写了一个自己写的, VBA获取文件清单的函数, 支持子文件夹

没找到粘贴代码的按钮 直接写到正文中吧

//函数: FileAllArr 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)

function FileAllArr(PathFolder,FileFilter="*.*",Liwai="",SubFolder=true,boolInKZM= "",boolNoKZM="",StrSplitor="/") {

//函数: FileAllArr 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)//参数: PathFolder 需查找的文件夹路径,不包含文件名

//参数: FileFilter 可选, 需要过滤的文件名,可省略,默认为:[*.*]

//参数: Liwai 可选, 剔除例外的文件路径,可省略,默认为:空,一般为:ThisWorkbook.Name

//参数: SubFolder 可选, 是否需要查找子文件夹内子文件夹,可省略,默认为:true

//参数: boolInKZM 可选, 需要包含哪些扩展名,可省略,默认为:空白=全部,可设置多个,[,]分割 例如:"JPG,JPEG,PNG,bmp,tiff,gif,pcx,tga,exif,fpx,svg,psd,cdr,pcd,dxf,ufo,eps,ai,raw,WMF,webp

//参数: boolNoKZM 可选, 需要排除哪些扩展名,可省略,默认为:空白=没有,可设置多个,[,]分割,例如:"xlsm,XLSX" 注意:XLS是不包含在:XLSM中的

//参数: StrSplitor 可选, 各级文件夹分隔符

//方法: let pathArr=FileAllArr(PathFolder,"*.xls?",ThisWorkbook.Name,true,".XLSX,.XLSM","","\\")

//作者: 北极狐工作室 QQ:14885553

//默认的分隔符号

if(StrSplitor.length == 0){StrSplitor = "/";}

if(FileFilter.length == 0){FileFilter="*.*";} //

//检查包含和排除:扩展名条件

if(boolInKZM.trim().length> 0){

boolInKZM = "|"+boolInKZM.trim().replace(",", "|").toUpperCase()+"|"

} else {

boolInKZM = ""

}

if(boolNoKZM.trim().length> 0){

boolNoKZM = "|"+boolNoKZM.trim().replace(",", "|").toUpperCase()+"|"

} else {

boolNoKZM = ""

}

let X,folder,path,folderA,file,strTemp,BoolA,BoolB

folder=PathFolder //防止参数值因为函数而产生变化 用一个局部变量代替

folder = folder.replace(/(\\|\/)$/, "");//去除最后一个正斜杠或者反斜杠(如果存在的话)

folder = folder.replace(/\//g, "\\"); //全部 正斜杠 弄成 反斜杠

let pathArr = [] //空白数组备用 放文件名

with(Application.FileSearch){

NewSearch();

SearchSubFolders=SubFolder;//是否查询子文件夹

FileName=FileFilter;//文件类型

LookIn=folder;//路径

Execute(msoSortByFileName);//查询类型

if(FoundFiles.Count==0){ //获取所有文件

return pathArr = [""] //退出

}

for(let i=1;i<=FoundFiles.Count;i++){

path=FoundFiles.Item(i);

if(StrSplitor!= "\\"){

path=path.replace(/\//g, "\\"); //全部 正斜杠 弄成 反斜杠

}

BoolA=true

BoolB=true

if(Liwai.length>0){ //排除指定文件名

let fName=path.replace(folder+"\\", "")

if(Liwai.toUpperCase()==fName.toUpperCase()){

BoolA=false

}

}

if(BoolA==true && BoolA==true){ //符合包含条件,同时符合排除条件

if(boolInKZM!= "" || boolNoKZM!=""){ ////扩展名判断boolInKZM= "",boolNoKZM=""

KZM=path.substr(path.lastIndexOf(".")).trim().toUpperCase() //方法可返回一个指定的字符串值最后出现的位置

if(boolInKZM!= ""){ // 检查扩展名是否是包含在内的

if(boolInKZM.indexOf("|" + KZM + "|")>=0){ //子字符串在字符串中的位置

BoolA=true

} else {

BoolA=false

}

}

if(boolNoKZM!= ""){ // 检查扩展名是否是不包含在内的

if(boolNoKZM.indexOf("|" + KZM + "|")>=0){ //子字符串在字符串中的位置

BoolB=false

} else {

BoolB=true

}

}

}

}

if(BoolA==true && BoolB==true){ //符合包含条件,同时符合排除条件

if(StrSplitor!= "\\"){ //按指定分隔符 输出文件名

path=path.replace(/\\/g, "/"); //全部 正斜杠 弄成 反斜杠

}

pathArr.push(path) //就保存文件路径

}

}

}

return pathArr

}

黑龙江省
浏览 116
收藏
3
分享
3 +1
3
+1
全部评论 3
 
方伟
我的怎么没有 是没有权限吗? 遨游浏览器
· 黑龙江省
回复
 
WPS 冲浪队长
WPS 冲浪队长

社区管理员

这里有滴~
· 广东省
回复
 
方伟
强烈建议: 网站弄一个粘贴代码的功能 和正文区分开
· 黑龙江省
回复