VBA如何遍历文件夹下面的所有文件

5 篇文章 2 订阅
这个博客分享了三个VBA代码版本,用于遍历指定文件夹下的所有文件,但不包括当前工作簿。第一版快速列出所有文件,第二版增加了排除当前工作簿的功能,第三版则将文件路径存储为字符串并提供了一个函数来拆分和打印这些路径。这些代码适用于需要在Excel中自动化处理文件列表的场景。
摘要由CSDN通过智能技术生成

1 极速版

sub getFolderFiles()
    ' 获取当前文件夹所有文件
    Folder   = "D:\OneDrive\桌面\test\"
    Filename = Dir(Folder)
    While Filename <> ""
        Debug.Print Filename
        Filename = Dir
    Wend
End sub

2 不包含当前文件版

sub getFolderFiles()
    ' 获取当前文件夹所有文件
    Folder   = "D:\OneDrive\桌面\test\"
    Filename = Dir(Folder)
    While Filename <> ""
    	if Filename <> ThisWorkbook.Name Then
	        Debug.Print Filename
	        Filename = Dir
	    end if
    Wend
End sub

3 函数版

不能返回数组,所以多加一步,数组变成字符返回,然后在调用处拆分为数组

Function getCurFiles()
    ' 获取当前文件夹所有文件
    Dim Folder$, Filename$, Filepath$, filepaths(), arrCount%
    Folder   = "D:\OneDrive\桌面\隽悦雅苑\"
    Filename = Dir(Folder)
    While Filename <> ""
        If Filename <> ThisWorkbook.Name Then
            ReDim Preserve filepaths(0 To arrCount)
            Filepath = Folder + Filename
            filepaths(arrCount) = Filepath
            arrCount = arrCount + 1
        End If
        Filename = Dir
    Wend
    getCurFiles = Join(filepaths, "|") 
End Function

第3个的使用案例

Sub test()
	Dim arr,a,file$
	file = getCurFiles
	arr  = Split(file,"|")
	For Each a in arr
		Debug.Print a	
	Next
End Sub
要在VBA遍历文件夹的所有文件,你可以使用FileSystemObject对象和Folder对象。下面是一个示例代码,可以帮助你完成这个任务: ```vba Sub TraverseFolder() Dim fso As Object Dim folder As Object Dim subfolder As Object Dim file As Object ' 创建一个FileSystemObject对象 Set fso = CreateObject("Scripting.FileSystemObject") ' 设置要遍历文件夹路径 Set folder = fso.GetFolder("C:\YourFolderPath") ' 遍历文件夹的所有文件 For Each file In folder.Files ' 在这里处理每个文件,例如打印文件名 Debug.Print file.Name Next file ' 遍历文件夹的所有子文件夹(递归) For Each subfolder In folder.Subfolders TraverseSubfolder subfolder Next subfolder ' 释放对象 Set file = Nothing Set subfolder = Nothing Set folder = Nothing Set fso = Nothing End Sub Sub TraverseSubfolder(subfolder As Object) Dim file As Object ' 遍历文件夹的所有文件 For Each file In subfolder.Files ' 在这里处理每个文件,例如打印文件名 Debug.Print file.Name Next file ' 遍历文件夹的所有子文件夹(递归) For Each subfolder In subfolder.Subfolders TraverseSubfolder subfolder Next subfolder End Sub ``` 请注意,你需要将代码的`"C:\YourFolderPath"`替换为你要遍历的实际文件夹路径。这个示例代码将遍历指定文件夹的所有文件,并打印每个文件的名称。你可以根据自己的需求在处理文件的部分进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

但老师

要是看起来爽 求打赏一耳光

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值