百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

VBA找出文件夹下所有的Excel文件

liuian 2025-02-06 15:41 36 浏览

在VBA中,遍历指定目录下的Excel文件通常涉及使用FileSystemObject。以下是一个基本的例子,说明如何遍历一个目录并列出所有的Excel文件(假设Excel文件的扩展名为.xlsx或.xls):

首先,你需要确保你的VBA项目引用了Microsoft Scripting Runtime。你可以通过以下步骤添加这个引用:

  1. 在VBA编辑器中,选择工具 > 引用。
  2. 在弹出的对话框中,滚动到Microsoft Scripting Runtime并勾选它。
  3. 点击确定。

代码

参考代码如下,可以实现递归遍历子文件夹:

Sub ListFilesInFolderRecursively()  
    Dim MyFolder As String  
    Dim wb As Workbook  
    Dim ws As Worksheet  
    Dim r As Range  
    Dim rowNum As Long  
      
    ' 设置要遍历的文件夹路径  
    MyFolder = "C:\YourFolderPath\"  
      
    ' 创建一个新的工作簿来记录结果  
    Set wb = Workbooks.Add  
    Set ws = wb.Sheets(1)  
    rowNum = 1  
      
    ' 调用递归函数来遍历文件夹  
    Call ListFilesInFolderRec(MyFolder, ws, rowNum)  
      
    ' 自动调整列宽以适应内容  
    ws.Columns(1).AutoFit  
      
    ' 清理对象  
    Set r = Nothing  
    Set ws = Nothing  
    Set wb = Nothing  
End Sub  
  
Sub ListFilesInFolderRec(FolderPath As String, ws As Worksheet, ByRef rowNum As Long)  
    Dim FSO As Object  
    Dim Folder As Object  
    Dim SubFolder As Object  
    Dim File As Object  
      
    ' 创建FileSystemObject对象  
    Set FSO = CreateObject("Scripting.FileSystemObject")  
      
    ' 获取文件夹对象  
    If FSO.FolderExists(FolderPath) Then  
        Set Folder = FSO.GetFolder(FolderPath)  
          
        ' 遍历文件夹中的所有文件  
        For Each File In Folder.Files  
            ' 检查文件是否是Excel文件  
            If LCase(FSO.GetExtensionName(File.Name)) = "xlsx" Or LCase(FSO.GetExtensionName(File.Name)) = "xls" Then  
                ' 在工作簿中记录文件名  
                ws.Cells(rowNum, 1).Value = File.Path  
                rowNum = rowNum + 1  
            End If  
        Next File  
          
        ' 遍历子文件夹  
        For Each SubFolder In Folder.SubFolders  
            ' 递归调用此函数来处理子文件夹  
            Call ListFilesInFolderRec(SubFolder.Path, ws, rowNum)  
        Next SubFolder  
    Else  
        MsgBox "The folder path does not exist."  
    End If  
      
    ' 清理对象  
    Set File = Nothing  
    Set SubFolder = Nothing  
    Set Folder = Nothing  
    Set FSO = Nothing  
End Sub


ListFilesInFolderRecursively 是主函数,它创建一个新的工作簿来记录文件路径。然后它调用 ListFilesInFolderRec 函数来递归地遍历指定目录及其所有子目录。ListFilesInFolderRec 函数检查每个文件是否是Excel文件,如果是,则将其路径记录到工作簿中。同时,它还遍历每个子文件夹,并递归调用自身来处理这些子文件夹。

注意,在代码中我使用了 LCase 函数来确保扩展名比较时不受大小写影响。同时,我也记录了文件的完整路径(File.Path),而不仅仅是文件名,这样你可以清楚地知道文件位于哪个文件夹中。如果你只需要文件名,你可以将 ws.Cells(rowNum, 1).Value = File.Path 更改为 ws.Cells(rowNum, 1).Value = File.Name

相关推荐

python入门到脱坑函数—定义函数_如何定义函数python

Python函数定义:从入门到精通一、函数的基本概念函数是组织好的、可重复使用的代码块,用于执行特定任务。在Python中,函数可以提高代码的模块性和重复利用率。二、定义函数的基本语法def函数名(...

javascript函数的call、apply和bind的原理及作用详解

javascript函数的call、apply和bind本质是用来实现继承的,专业点说法就是改变函数体内部this的指向,当一个对象没有某个功能时,就可以用这3个来从有相关功能的对象里借用过来...

JS中 call()、apply()、bind() 的用法

其实是一个很简单的东西,认真看十分钟就从一脸懵B到完全理解!先看明白下面:例1obj.objAge;//17obj.myFun()//小张年龄undefined例2shows(...

Pandas每日函数学习之apply函数_apply函数python

apply函数是Pandas中的一个非常强大的工具,它允许你对DataFrame或Series中的数据应用一个函数,可以是自定义的函数,也可以是内置的函数。apply可以作用于DataF...

Win10搜索不习惯 换个设定就好了_window10搜索用不了怎么办

Windows10的搜索功能是真的方便,这点用惯了Windows10的小伙伴应该都知道,不过它有个小问题,就是Windows10虽然会自动联网搜索,但默认使用微软自家的Bing搜索引擎和Edge...

面试秘籍:call、bind、apply的区别,面试官为什么总爱问这三位?

引言你有没有发现,每次JavaScript面试,面试官总爱问你call、bind和apply的区别?好像这三个方法成了通关密码,掌握了它们,就能顺利过关。其实不难理解,面试官问这些问题,不...

记住这8招,帮你掌握“追拍“摄影技法—摄影早自习第422日

杨海英同学提问:请问叶梓老师,我练习追拍时,总也不能把运动的人物拍清晰,速度一般掌握在1/40-1/60,请问您如何把追拍拍的清晰?这跟不同的运动形式有关系吗?请您给讲讲要点,谢谢您!摄影:Damia...

[Sony] 有点残酷的测试A7RII PK FS7

都是好机!手中利器!主要是最近天天研究fs5,想知道fs5与a7rii后期匹配问题,苦等朋友的fs5月底到货,于是先拿手里现有的fs7小测一下,十九八九也能看到fs5的影子,另外也了解一下fs5k标配...

AndroidStudio_Android使用OkHttp发起Http请求

这个okHttp的使用,其实网络上有很多的案例的,但是,如果以前没用过,copy别人的直接用的话,可以发现要么导包导不进来,要么,人家给的代码也不完整,这里自己整理一下.1.引入OkHttp的jar...

ESL-通过事件控制FreeSWITCH_es事务控制

通过事件提供的最底层控制机制,允许我们有效地利用工具箱,适时选择使用其中的单个工具。FreeSWITCH是一个核心交换与混合矩阵,它周围有几十个模块提供各种功能特性。我们完全控制了所有的即时信息,这些...

【调试】perf和火焰图_perf生成火焰图

简介perf是linux上的性能分析工具,perf可以对event进行统计得到event的发生次数,或者对event进行采样,得到每次event发生时的相关数据(cpu、进程id、运行栈等),利用这些...

文本检索控件也玩安卓?dtSearch Engine发布Android测试版

dtSearchEngineforLinux(原生64-bit/32-bitC++和JavaAPIs)和dtSearchEngineforWin&.NET(原生64-bi...

网站后台莫名增加N个管理员,记一次SQL注入攻击

网站没流量,但却经常被SQL注入光顾。最近,网站真的很奇怪,网站后台不光莫名多了很多“管理员”,所有的Wordpres插件还会被自动暂停,导致一些插件支持的页面,如WooCommerce无法正常访问、...

多元回归树分析Multivariate Regression Trees,MRT

多元回归树(MultivariateRegressionTrees,MRT)是单元回归树的拓展,是一种对一系列连续型变量递归划分成多个类群的聚类方法,是在决策树(decision-trees)基础...

JMETER性能测试_JMETER性能测试指标

jmeter为性能测试提供了一下特色:jmeter可以对测试静态资源(例如js、html等)以及动态资源(例如php、jsp、ajax等等)进行性能测试jmeter可以挖掘出系统最大能处...