VBA获取某文件夹下所有文件和子文件目录的文件

VBA获取某文件夹下所有文件和子文件目录的文件,第1张

【引用位置】 https://blog.csdn.net/pashine/article/details/42100237

'-------------------------------------------

'获取某文件夹下的所有Excel文件

'-------------------------------------------

Sub getExcelFile(sFolderPath As String)

On Error Resume Next

Dim f As String

Dim file() As String

Dim x

k = 1

ReDim file(1)

file(1) = sFolderPath &""

End Sub

'-------------------------------------------

'获取某文件夹下的所有文件和子扰者好目录下的文件

'-------------------------------------------

Sub getAllFile(sFolderPath As String)

'Columns(1).Delete

On Error Resume Next

Dim f As String

Dim file() As String

Dim i, k, x

x = 1

i = 1

k = 1

ReDim file(1 To i)

file(1) = sFolderPath &""

'-- 获得所有子目录

Do Until i >k

f = Dir(file(i), vbDirectory)

Do Until f = ""

If InStr(f, ".") = 0 Then

k = k + 1

ReDim Preserve file(1 To k)

file(k) = file(i) &f &""

End If

f = Dir

Loop

i = i + 1

Loop

'-- 获得所有子目录下的所有文件

For i = 1 To k

f = Dir(file(i) &" . ")'通嫌塌配符 . 表示所有文件,*.xlsx Excel文件

Do Until f = ""

'Range("a" &x) = f

Range("a" &x).Hyperlinks.Add Anchor:=Range("缓铅a" &x), Address:=file(i) &f, TextToDisplay:=f

x = x + 1

f = Dir

Loop

Next

End Sub

还没有解决吗?那我就来试一下。

(1)首先,楼主先新建一个excel,名称楼主自己写,怎样都行,然后将其打开。

(2)打开后按住Alt再按F11,这样就会打开vba代码编辑器

(3)点菜单栏上的“插入”,选择“模块”,这样在左下角就会出现一个“模块1”

(4)双击“模块1”,右边就会出现“模块1”的编辑界面,将以下代码复制,并粘贴到这个界面中,按F5运行。

Sub 遍历文件夹()

'Columns(1).Delete  

On Error Resume Next

Dim f As String

Dim file() As String

Dim i, k, x

x = 1

i = 1: k = 1

ReDim file(1 To i)

file(1) = InputBox("请输入要查找的文件夹:") & "\"

Do Until i > k

    f = Dir(file(i), vbDirectory)

        Do Until f = ""

            If InStr(f, ".") = 0 Then

                k = k + 1

                ReDim Preserve file(1 To k)

                file(k) = file(i) & f & "\"

            End If

            f = Dir

        Loop

    i = 袭答i + 1

Loop

For i = 1 To k

    f = Dir(file(i) & "*.*")

    Do Until f = ""

       'Range("a" & x) = f

       Range("a" & x).Hyperlinks.Add Anchor:=Range("腔世a" & x), Address:= _

        file(i) & f, TextToDisplay:=f

        x = x + 1

        f = Dir

    Loop

Next

End Sub

(5)在出现的对话框中,将你要查找的文件的地址复制到对话框中,按确定,就完成了。

注:这伍禅肢里用的是excel2007版,如果楼主用的是其他版本,有可能存在代码不兼容问题。

图1.打开vba编辑器。

图2.运行代码。

图3.结果。

一、所需DOS命令

dir [drive:][path] /b >[drive:][path]filename

二、应用实例

如下图,在D盘中,有一个名称为“TQIPC”的文件夹,这个文件夹里面,存放了很多的照片!

现在,我们要做的就是,如何让这些照片的名称,自动显示在Excel或记事本里面!

执行菜单 *** 作“开始”→“运行”,d出大中运行对话框,在里面输入 CMD 并按“确定”键,这个时候,会打开如下图的MS-DOS窗口!

之后,如下图一样,输入DOS命令即可!

上述的命令输入好之后,就按下回车键,命令就执行了,以上生成的是XLS文件;如果您想生成记事本TXT文件,那么,就输入下图的dos命令即可!

就这样,非常简单,文件名的列表文件,就形成了!如下图!

通过dos命令的 *** 作,我们就得到了如上图的两个文件了。

下面我们打开temp.xls文件看看,如下图!

看到了没有,文件夹中的照片名称,自动就显示在excel表格中了!

该dos命令非常强大,用好dos命令,可省去我们很多的功夫。

三、知识扩展

下面,再给大家一个例子,即,自动根据照片(根据人物名称),建立文件夹。

如果某个文件夹下面,您存放的是某些人物的照片,并且,每个人物的照片,都使用其名字来命名;这个时候,如何要自动根据人物的自动建立其对应的文件夹,也相当方便!

*** 作的方法是,先根据上述的方法,获取所有人物的照片的名称,生成EXCEL文件;

然后,在人物名称列前面,插入一列,并输入MD;

接下来,使用查找替换功能,将excel文件中的人物名称,去掉扩展名(只保留名字);

最后,将excel的内容,复制粘贴到记事本中,现在,我们就得到了形如:“MD 人物名称” 这样的命令格式了。(md 文件名称,该命令格式,是使用来建立文件夹的命令,上述的宴仿信 *** 作,都是为此做准备!)

将记事本文件保存成为形如:124.bat格式的文件,晌轮最后,双击此文件,文件夹名称就自动建立好了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12209766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存