selecteditems

谈起这个问题,很多网友肯定会说:这没什么了不起的。不就是直接列出指定目录下的一级目录或者一级文件吗?网上有很多解决这个问题的方法。诚然,网上有很多东西,但不是全部。为什么这么说?让人想到的是,区分文件夹和文件的标志是看其名称是否含有“.”签字,证明是文件,否则是文件夹目录。这个概念似乎被大多数人所接受,因为大多数人认为只有文件包含“.”符号,而文件夹和目录则没有。呵呵,听起来很有道理,也比较符合大多数人的看法。

但是,你有没有想过:你能仅仅通过是否包含“.”来区分文件夹目录和文件吗签字?显然,答案是否定的,如果人人都受欢迎的话,在Windows目录下找,有一个文件夹名为“Microsoft。网”。按照上面大多数人的观点,这种命名应该只适合文件,不适合文件夹目录,这很不可思议,但实际上并不是。带“.”的符号也适用于文件夹目录。这样,就带来了另一个问题。如果它们都包含符号“.”,怎么才能区分文件夹和文件?

因此,判断文件夹目录中的任何对象是文件夹还是文件,不能简单地以是否包含“.”来判断签名。那么如何判断呢?让我们开门见山吧。我们本质上是通过一个文件系统对象的FolderExists函数的逻辑值的真与假来判断一个文件夹或者一个文件。

下面我们还是把大多数人接受的第一种方法和我自己的第二种方法介绍给大家,让大家看看谁优谁劣。

方法1:根据文件夹和文件是否包含“.”符号来区分和列出它们。

(一)简单的前端接口

selecteditems

图1否含有标志“.”列举文件夹/文件设计界面图1列出了不带“.”符号的文件夹/文件设计界面

(2)要实现的功能代码

模块1中的代码如下

子方法1()用于显示所选文件夹目录中的文件夹或文件& # 39;通过InStr(f,& # 34;。")结合f "。"而f & lt& gt".."方法来显示带有扩展名的文件夹/文件。

出错时继续下一步

Dim FileFoler()为字符串,Level1_Files()为字符串,f为字符串& # 39;定义存储文件夹目录和存储文件的动态数组FileFoler()和Level1_Files(),其中f是当前文件夹或文件的名称。

尺寸I、文件夹计数、文件计数、rg作为范围

i = 1:文件夹计数= 1:文件计数= 0

[A2:A65535]。清除内容

[A2:A65535]。HorizontalAlignment = xlRight

设置rg = Cells(1,1)

设置fd =应用程序。file dialog(msoFileDialogFolderPicker)& # 39;将浏览文件夹文件对话框对象分配给fd。

k = fd。show()& # 39;启动“浏览文件夹文件”对话框。

如果k = 0,那么

MsgBox & # 34您点击按钮取消选择!",vbInformation,& # 34;提示& # 34;

其他

sFolder = fd。选择项目。项目(1)

ReDim filefolder(1到I)

file folder(1)= s folder & amp;"\"

f = Dir(filefolder(i),vbDirectory)

Do While f & lt& gt""

如果InStr(f,& # 34;。")= 0那么& # 39;通过检查不带“.”的文件对话框获得的对象信息首次标记(即不包括带有扩展名的案例,当前目录“.”和父目录”..”).

文件夹计数=文件夹计数+ 1

ReDim Preserve FileFoler(1到folder_count)

file foler(folder _ count)= file foler(I)& amp;f & amp"\"

rg。Offset(folder_count – 1,0)= f & amp;"(文件夹)& # 34;

Else & # 39否则,它是一个带扩展名的文件(不考虑不带扩展名的特殊文件)

如果f & lt& gt"。"而f & lt& gt".."然后

文件计数=文件计数+ 1

ReDim保留级别1 _文件(1到文件计数)

Level1_Files(文件计数)= f

如果…就会结束

如果…就会结束

f =方向

'追加文件名信息

如果file _ count & gt那么0

max_row = [A65535]。结束(xlUp)。排

对于i = 1到文件计数

rg。offset(max _ row+I-1)= level 1 _ Files(I)& amp;"(带扩展名的文件)& # 34;

然后

如果…就会结束

如果…就会结束

末端接头

(3)操作测试

1.点击按钮;,调出浏览文件夹对话框。如下图所示

2.选择上面的文件夹并确认。效果如下。

方法二:通过文件系统对象的FolderExists函数的真、假逻辑值,从本质上区分并列出文件夹和文件。

(一)简单的前端接口

(2)要实现的功能代码

模块1中的代码如下

Sub显示所选文件夹目录中的文件夹或文件方法2()& # 39;组合f

出错时继续下一步

Dim FileFoler()为字符串,Level1_Files()为字符串,f为字符串& # 39;定义存储文件夹目录和存储文件的动态数组FileFoler()和Level1_Files(),其中f是当前文件夹或文件的名称。

尺寸I、文件夹计数、文件计数、rg作为范围

Dim file1$,YF_Folder为Boolean & # 39将file1 $和YF _文件夹分别定义为获取的文件夹/文件的完整路径信息,以及是否为文件夹目录的标志。

i = 1:文件夹计数= 1:文件计数= 0

[A2:A65535]。清除内容

[A2:A65535]。HorizontalAlignment = xlRight

设置rg = Cells(1,1)

设置fd =应用程序。file dialog(msoFileDialogFolderPicker)& # 39;将浏览文件夹文件对话框对象分配给fd。

k = fd。show()& # 39;启动“浏览文件夹文件”对话框。

如果k = 0,那么

MsgBox & # 34您点击按钮取消选择!",vbInformation,& # 34;提示& # 34;

其他

sFolder = fd。选择项目。项目(1)

ReDim filefolder(1到I)

set FSO = CreateObject(& # 34;脚本编写。FileSystemObject & # 34) '创建文件系统对象fso

file folder(1)= s folder & amp;"\"

f = Dir(filefolder(i),vbDirectory)

Do While f & lt& gt""

file1 = filefolder(i)和ampf & # 39File1 -获取文件夹/文件的完整路径信息。

YF文件夹= fso。文件夹存在(文件1)& # 39;file1是否是文件夹目录是通过文件系统对象FolderExists()的方法来判断的。

如果YF文件夹=真,那么& # 39;如果获得的f是文件夹目录

如果f & lt& gt"。"而f & lt& gt".."然后& # 39;f & lt& gt"。"而f & lt& gt".."是为了防止隐藏前缀”。当前目录”和”..上一个目录”

folder _ count = folder _ count+1 & # 39;对目录跟踪器进行累积计数。

ReDim Preserve FileFoler(1到folder _ count)& # 39;在不破坏原始动态数组的情况下,动态增加数组长度。

file foler(folder _ count)= file foler(I)& amp;f & amp"\"

rg。Offset(folder_count – 1,0)= f & amp;"(文件夹)& # 34;

如果…就会结束

Else & # 39否则,检测到的文件(更正了原始InStr(f,& # 34;。")的方式来确定它是文件还是目录的缺点,因为有些文件可能没有扩展名)

文件计数=文件计数+1 & # 39;跟踪文件计数

ReDim保留Level1_Files(1到file _ count)& # 39;在不破坏原始动态数组的情况下,动态增加数组长度。

Level1_Files(文件计数)= f

如果…就会结束

f =方向

'追加文件名信息

如果file _ count & gt那么0

max_row = [A65535]。结束(xlUp)。排

对于i = 1到文件计数

file _ Name = IIf(InStr(level 1 _ Files(I),& # 34;。")= 0,level 1 _ Files(I)& amp;"(没有扩展名的文件)& # 34;,级别1 _文件(I)和amp"(带扩展名的文件)& # 34;)

rg。Offset(max_row + i – 1) =文件名

然后

如果…就会结束

如果…就会结束

末端接头

(3)操作测试

1.点击按钮

2.选择上面的文件夹并确认。效果如下。

总结:从以上两种方法,你可能已经看出了两者的区别。显然,第二种方法是真正意义上区分文件夹和文件的最本质的方法。是对网上大多数人认为的有缺陷的方法的有益补充,希望你以后能用上!

好了,我们的文章分享到这里吧。感谢大家一如既往的关注(头条号:向我学习Office进阶Office)、推广和评论!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论