精华内容
下载资源
问答
  • VBA中遍历文件方法很多,但很多方法又有局限,DIR方法很难遍历子...所有我们来用FileSystemObject对象实现遍历文件夹及子文件夹中所有文件. 代码如下:  Dim arrFiles() Dim countFiles% Public Sub ListAll...

    VBA中遍历文件方法很多,但很多方法又有局限,DIR的方法很难遍历子文件夹文件.FileSearch方法在office 2007中MS把Application对象FileSearch方法删除了.所有我们来用FileSystemObject对象实现遍历文件夹及子文件夹中所有文件.

    代码如下:

     Dim arrFiles()
     Dim countFiles%
     Public Sub ListAllFiles()
        
             Dim strPath$
             Dim i%
             Dim fso As New FileSystemObject, fd As Folder

             strPath = "C:\temp"
             ReDim arrFiles(1 To 1000)
             cntFiles = 0
             Set fd = fso.GetFolder(strPath)
             SearchFiles fd
             ReDim Preserve arrFiles(1 To countFiles)
             For i = 1 To cntFiles
                Msgbox arrFiles(i)
             Next i
     End Sub

     Sub SearchFiles(ByVal fd As Folder)
         Dim fl As File
         Dim sfd As Folder
       
         For Each fl In fd.Files
           countFiles= countFiles+ 1
           If cntFiles > UBound(arrFiles) Then ReDim Preserve arrFiles(1 To countFiles+ 1000)

          arrFiles(cntFiles) = fl.Path
         Next fl
       
         If fd.SubFolders.Count = 0 Then Exit Sub
       
         For Each sfd In fd.SubFolders
           SearchFiles sfd
         Next
       
     End Sub

    展开全文
  • 由于之后需求又升级为找脚本方面需要具有适用性,即脚本位于文件夹层级不确定,也就是说脚本位置不确定,经过网上资料查询即自我构思,最后写下这篇遍历文件夹所有的你需要的文件,闲话少说,进入正题...

    之前接了一个需求,需要将查询一个大文件夹下所有的脚本中是否包含某一个字符串,大文件夹下的第二层为众多小文件夹,每一个小文件夹下又还有文件夹,所要的脚本位于文件夹的最底层。

    接到这个需求的时候我就考虑我要满足的两个部分,一个是查询脚本(最终目的),另一个是找到脚本(必然过程)。
    由于之后的需求又升级为找脚本方面需要具有适用性,即脚本位于的文件夹的层级不确定,也就是说脚本的位置不确定,经过网上资料的查询即自我的构思,最后写下这篇遍历文件夹下所有的你需要的文件,闲话少说,进入正题。

    先设置一个场景:现在有一个文件夹test,其下有两个子文件夹A,B,A中有一些TXT文本,B中有我们所需要的一个pl脚本,现在我们来开始进行查询取得pl脚本中的内容。

    Sub  findfileway()
         
          dim fso,folder,fds,fd   '设置变量
          Dim beginfile   '设置最外层文件夹路径
          Dim folderway  '当前路径
          Dim filename '设置文件夹/文件名称
          Dim myfile  '定位文件
          set fso=createobject("scripting.filesystemobject") 
          '建立文件系统对象变量
          set folder=fso.getfolder(beginfile)
          '获得文件夹
          set fds=folder.subfolders   '路径下的子文件夹集合
          For each fd in fds 
               
               filename=fd.name  '将名字赋予filename
               folderway=(beginfile+"\"+filename)
               myfile=dir(folderway+"\*.pl")  '定位查询文件夹A下是否含有pl脚本,为空则没有
               if myfile <>"" then 
                    
               Else
               
               End if
               
          
          Next  '进行循环test下一个文件夹B
     End sub
    

    至此我们可以完成第二级文件夹的循环遍历,并在其下中查询出需要的pl脚本,但pl脚本并不是只位于第二级文件夹或者是位于更多级之后的文件夹中,这样我们就需要循环调用这个方法来完成我们的需求。接下来进行之后的代码编写,位于end if之后next之前。

        '继续遍历子文件夹
        folderway=(folderway+"\"+filename)
        dim folder5,fds2,fd2
        set folder5= fso.getfolder(beginfile)
        set fds2=folder5.subfolders
        For each fd2 in fds2  '循环遍历下一级文件夹
             myfile=dir(folderway+"\*.pl)
             If (myfile<>"" and filename <>"")or (fd2<>"")then
                  call findfileway()
             else
             End if
        Next
    

    这部分代码都位于findfileway中,多次调用自己本身即可达到循环遍历多级文件夹的效果直到找到自己需要的文件。这段代码中最重要的是那个判断,判断是否还有下一级子文件夹,如果有就进行遍历。
    以上就是全部的思路及代码,如有问题欢迎提问我会尽量解答。

    展开全文
  • 本次所讲的遍历获取某文件夹所有文件,其实是我的《每月自动汇总考勤数据》案例中的其中一个知识点,近期我将会集中将本案例中所有应用到的知识点逐一的写出来,最后汇总成一个真正可用的成品。 本案例中首要的...

    说明

    本次所讲的遍历获取某文件夹下所有文件,其实是我的《每月自动汇总考勤数据》案例中的其中一个知识点,近期我将会集中将本案例中所有应用到的知识点逐一的写出来,最后汇总成一个真正可用的成品。
    本案例中首要的突破的技术难关就是如何获取各部门报送的考勤表文件,然后对比有哪些部门没有报送,如果全都报送了,则逐个读取文件内容填入汇总表中。

    关键技术点:Dir函数

    返回一个 String,它表示与指定模式或文件属性或驱动器的卷标匹配的文件、目录或文件夹的名称。
    语法:Dir [ (pathname, [ attributes ] ) ]
    引用自:https://docs.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/dir-function

    Dir 函数语法具有以下部分:

    Part 说明
    pathname 可选。 指定文件名的字符串表达式,可包括目录或文件夹和驱动器。 如果未找到 pathname,则返回零长度字符串 ("")。
    attributes 可选。 其和指定文件属性的常量或数值表达式。 如果省略它,则返回与 pathname 匹配但没有属性的文件。

    attributes 参数设置为:

    常量 说明
    vbNormal 0 (默认)指定没有属性的文件。
    vbReadOnly 1 指定只读文件以及不带属性的文件。
    vbHidden 2 指定隐藏文件以及不带属性的文件。
    vbSystem 4 指定系统文件以及不带属性的文件。 在 Macintosh 上不可用。
    vbVolume 8 指定卷标;如果指定任何其他属性,则忽略 vbVolume。 在 Macintosh 上不可用。
    vbDirectory 16 指定目录或文件夹以及不带属性的文件。
    vbAlias 64 指定文件名为别名。 仅在 Macintosh 上可用。

    代码code

    Private Sub btnCheck_Click()
      '获取本文件所在文件夹所有文件
      Dim strPath As String
      strPath = ActiveWorkbook.Path
      Dim coFiles As New Collection
      Dim tFile As String
      tFile = Dir(strPath & "\", vbDirectory)
      Do While tFile <> ""
        If tFile <> "." And tFile <> ".." Then
        '系统会自动出现两个名为"."和".."的内容,其所能发挥的功能不是本次案例所需要的,所以将此内容剔除。
          coFiles.Add (tFile)
        End If
        tFile = Dir'每调用一次Dir只返回一个文件名
      Loop
      
      '为了方便呈现效果,在sheet1中的第2列显示出结果
      For i = 1 To coFiles.Count
        Cells(1 + i, 2).Value = coFiles.Item(i)
      Next
      MsgBox "运行结束,请检查运行结果。"
    End Sub
    

    运行效果图

    运行效果图

    使用说明

    1. 获取到的文件名存储在一个Collection类型中,存储、统计、调用皆是相当简洁;
    2. 在遍历获取文件夹所有文件时会出现两个名为".“和”…"的内容,这两个内容有熟悉的朋友会在WinRAR压缩软件中见过,具体如何使用不是本次案例所需要掌握的,暂不深入了解;
    3. Dir函数的特点是,每调用一次仅返回一个文件名,所以要采用循环语句,当遍历了所有文件后,再调用Dir函数则返回空字符串。
    4. 请点击下载本文附件

    如有意见建议或使用中出现Bug留言,谢谢!

    展开全文
  • http://excelpx.com/Dispbbs.asp?boardid=177&ID=132522<br />  在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBAfilesercth对象,另外一种是使用FileSystemObject(windows文件...

    http://excelpx.com/Dispbbs.asp?boardid=177&ID=132522

     

    在VBA遍历文件夹和子文件夹中所有文件,常用两种方法,一种是使用VBA的filesercth对象,另外一种是使用FileSystemObject(windows文件管理工具)和递归方法。兰色对代码进行了注解,希望对大家有所帮助

        第一种方法:使用filesearch对象

               Sub mysearch()
    Dim fs, i, arr(1 To 10000)
    Set fs = Application.FileSearch '设置一个搜索对象
    With fs
        .LookIn = ThisWorkbook.Path & "/" '设置搜索路径
        .Filename = "*.xls"  '要搜索文件名和类型
        .SearchSubFolders = True  '是否需要搜索子文件夹
        If .Execute > 0 Then  '如果找不到文件
            MsgBox "There were " & .FoundFiles.Count & _
            " file(s) found."  '显示文件找不到
            For i = 1 To .FoundFiles.Count  '通过循环把所有搜索到的文件存入到数组中
              arr(i) = .FoundFiles(i)
           Next i
    Sheets(1).Range("A1").Resize(.FoundFiles.Count) = Application.Transpose(arr) '  '把数组内的路径和文件名放在单元格中
        Else
            MsgBox "There were no files found."
        End If
    End With
    End Sub

    第二种方法:引用FileSystemObject对象

        注意:要使用FileSystemObject对象,需要首先引用一下,具体方法,VBE--工具--引用--找到miscrosoft scription runtime项目并选中

       代码及注释:

            Dim ArrFiles(1 To 10000) '创建一个数组空间,用来存放文件名称
    Dim cntFiles% '文件个数

    Public Sub ListAllFiles()
           
            Dim strPath$  '声明文件路径
            Dim i%
           'Set fso = CreateObject("Scripting.FileSystemObject")
            Dim fso As New FileSystemObject, fd As Folder  '创建一个FileSystemObject对象和一个文件夹对象

            strPath = ThisWorkbook.Path & "/" '"设置要遍历的文件夹目录
            cntFiles = 0
            Set fd = fso.GetFolder(strPath) '设置fd文件夹对象
            SearchFiles fd '调用子程序查搜索文件
            Sheets(1).Range("A1").Resize(cntFiles) = Application.Transpose(ArrFiles) '把数组内的路径和文件名放在单元格中

    End Sub

     

    Sub SearchFiles(ByVal fd As Folder)

        Dim fl As File
        Dim sfd As Folder
        For Each fl In fd.Files   '通过循环把文件逐个放在数组内
          cntFiles = cntFiles + 1
          ArrFiles(cntFiles) = fl.Path
        Next fl
      
        If fd.SubFolders.Count = 0 Then Exit Sub 'SubFolders返回由指定文件夹中所有子文件夹(包括隐藏文件夹和系统文件夹)组成的 Folders 集合

        For Each sfd In fd.SubFolders '在 Folders 集合进行循环查找
          SearchFiles sfd '使用递归方法查找下一个文件夹
        Next
      
    End Sub

    展开全文
  • 我们可能会经常要将一个文件夹中的所有文件遍历一遍,然后进行修改,下面就介绍用Dir函数实现遍历*.xlsx文件的方法 Dir 函数 返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的...
  • 文章目录一、调用目标文件夹的方法1、Application.FileDialog方法2、视窗浏览器界面选择目标文件夹二、仅列出所有文件三、仅列出目标文件夹中所有子文件夹名四、遍历目标文件夹内所有文件、以及所有子文件夹中的所有...
  • 我们可能会经常要将一个文件夹中的所有文件遍历一遍,然后进行修改,下面就介绍用Dir函数实现遍历*.xlsx文件的方法 Dir 函数 返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或...
  • 我这里是关键词是 "测试",逻辑是:现实情况,不方便/不允许使用On Error情况下,我们可换一个思路,可以判断是不是Nothing 1、先说第一种情况:遍历所有工作表,是否存在某一个关键词 Sub 搜索确认() Dim ...
  • 一个vba(宏)写的小工具,可以遍历本目录下的所有文件夹以及所有文件 在日文环境下运行没有问题 中文环境下没有试过。
  • 我们可能会经常要将一个文件夹中的所有文件遍历一遍,然后进行修改,下面就介绍用Dir函数实现遍历*.xlsx文件的方法 Dir 函数 返回一个 String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或...
  • 可以将一个文件夹中的所有xlsx或类似的表格文件批量转换为pdf文件遍历每个工作表的每个sheet并逐一转换。 Sub TO_PDF() On Error Resume Next Dim ALL_FILE As String, SourcePath As String, NewSaveFile As...
  • 使用Excel的VBProject可以导出文件中的VBA代码,但是有的文件有宏密码保护,导出就会报错。...把VBS放在要导出的文件夹下运行,遍历该路径下所有的Excel文件,并在放置VBS的路径生成Excel文件名的文件夹...
  • NPOI遍历excel表格

    2020-03-06 19:41:00
    遍历指定文件夹所有的xls,首先获取所有文件夹xls文件路径,使用VBA脚本生成到一个xls文件中VBA脚本如下: Sub filelist() Dim MyName, Dic, Did, i, t, F, TT, MyFileName 'On Error Resume Next Set ...
  • os 主要用于遍历文件夹的所有文件名称(包括扩展名),再利用concat 进行循环合并即可,但是需要注意的是,b=[],这样是不对的,需要转化为dataframe结构,因为pandas的concat 函数合并的数据,类型必须...
  • VBA笔记

    2016-08-19 13:17:00
    VBA打开文件自动执行宏: Sub auto_open() Application.Run "PERSONAL.XLSB!...遍历文件夹的所有文件: Dim fna As String fna = Dir("C:\周报\*.csv") '正则条件可修改 Do While fna...
  • 功能:遍历用户指定文件夹,把文件夹中所有的excel文件的第一个表格数据复制到本excel文件中。注意,每个excel文件中有效数据行判断标准是A列最后一个有数据单元格行号,比如A列到第10行结束,B列到第11...
  • 在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成最终作业报告。 股票市场分析师 指示 创建...
  • 要解决问题: 同一个文件夹有多个工作簿,工作簿中有相同格式多个sheet表,其中有两个固定SHEET需要...2、使用dir在文件夹中遍历文件,然后打开工作簿,再打印指定工作表,然后关闭文件。 EXCELVBA代码如.
  • 在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成最终作业报告。 股票市场分析师 指示 创建...
  • 数据:把源文件放在一个文件夹(XX\源文件\文件1.xslx 文件2.xlsx)需要合并到目标文件放在XX\目标文件.xlsx 环境:打开目标文件,选择某个sheet页,右键选择“查看代码”,插入模块后粘贴下面代码即可。 ...
  • Vba-Challange-源码

    2021-02-13 15:11:59
    在刚创建的文件夹内,添加任何VBA文件。 这些将是每个分析运行主要脚本。 将以上更改推送到GitHub或GitLab。 档案 -在开发脚本时使用它。 -在此数据上运行脚本以生成最终作业报告。 股票市场分析师 指示 创建...
  • VBA for Excel (五)

    2020-03-05 16:41:24
    VBA中的输入输出 合并某文件夹所有工作簿 思路 授之以鱼不如授之以渔,看过之前两篇你大概会控制工作簿了,这篇直接教你一般遇到问题我们该怎么做。本片的核心是实现某文件夹所有工作簿的合并。 我们需要按...
  • VBA常用技巧

    2014-12-21 16:39:28
    119-4 使用名称中的变量遍历图形 12 119-5 使用FormControlType属性遍历图形 12 技巧120 使微调框最小变动量小于1 12 技巧121 不打印工作表中的控件 12 121-1 设置控件格式 12 121-2 设置控件的printobjcet属性 12 ...
  • 之前一篇文章,讲了如何使用Dir函数遍历获取文件夹所有文件,当然演示使用实例比较简单,方便演示结果。实际工作各部门报送考勤除了明细统计表还有通报文件。具体文件信息如下图: 本文章就演示如何只...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    119-4 使用名称中的变量遍历图形 283 119-5 使用FormControlType属性遍历图形 284 技巧120 使微调框最小变动量小于1 285 技巧121 不打印工作表中的控件 287 121-1 设置控件格式 287 121-2 设置控件的printobjcet属性...
  • Excel VBA技巧实例手册

    2016-07-28 22:29:39
    目录 第1篇 ExcelVBA基础 第1章 了解Excel宏 1.1 创建宏 技巧001显示“开发工具”选项卡 技巧002录制第一个宏 技巧003在VBE创建宏 1.2 管理宏 技巧004运行宏 技巧005编辑宏 ...第12章 文件文件夹操作技巧

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

vba遍历文件夹中的所有文件