专栏首页VBA 学习文件操作——查找遍历

文件操作——查找遍历

前面说过了文件的读取、写入,那么在操作文件之前,一般我们需要找到操作的文件的路径,VBA对象库中,有一个FileSystem的模块,里面有关于文件操作的一些函数:

1、文件查找:

文件查找主要用到的是Dir函数,还是建议先按F1看看官方文档。

如果我们要读取一个未打开的Excel文件的数据,我们知道使用Workbooks.Open,如果我们打开的是一个并不存在的文件,将会出现错误:

这个是运行的时候才会出现的错误,也就是只有在运行过程中才能出现的错误,这个错误将直接造成我们的程序运行中断。

而从程序设计的角度来看,我们应该是希望在文件不存在的情况下,跳出一个提示框告诉我们文件不存在,而不是直接中断程序的运行。

所以,在打开文件之前,最好先能够判断文件是否存在,Dir函数就能够实现这个功能:

Sub TestDir()
    Dim FileName As String
    
    FileName = ThisWorkbook.Path & "\1.xlsx"
    
    If VBA.Dir(FileName) <> "" Then
        Workbooks.Open FileName
    Else
        MsgBox "文件不存在:" & vbNewLine & FileName
    End If
End Sub

这样处理,程序在运行过程中,如果不存在文件,MsgBox会跳出提示框告诉我们文件不存在,这样就比直接中断程序运行友好多了。

VBA.Dir(FileName)在FileName这个文件不存在的情况下,会返回空字符串,文件存在的情况下会返回文件的名称,所以我们可以根据它的返回值来判断文件是否存在。

2、文件遍历

如果我们想要获取1个文件夹下所有的文件名称,也可以使用Dir来获取:

Sub TestDir()
    FTestDir ThisWorkbook.Path
End Sub

Function FTestDir(strdir As String) As Long
    Dim fn As String
    
    '*代表查找所有的文件以及文件夹,也可以使用"*.xlsx"这样的形式查找后缀为.xlsx的文件
    '第一次调用返回第1个符合条件的,没有的情况下会返回空字符串
    fn = VBA.Dir(strdir & "\*", vbDirectory)
    Do Until fn = ""
        Debug.Print fn
        '一定要再次调用不带参数的Dir函数,这将返回下一个符合条件的
        fn = VBA.Dir()
    Loop
End Function

这个功能在汇总多个Excel文件数据的时候是经常会使用到的,使用过程中要注意的是Dir返回的是文件名称,不含前面的路径,所以在使用Workbooks.Open的时候,一定要记得带上路径。

本文分享自微信公众号 - VBA 学习(xyjvba),作者:熊业军

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VBA解析复合文档00

    可能这个名字没有听说过,但是只要使用过Windows电脑的,其实都接触过这种结构的文件,只是没有注意到而已。

    xyj
  • 文件操作——其他

    对于文件的其他一些操作,其实和我们平时用鼠标操作都是差不多的,主要就是创建文件夹、删除文件夹、创建文件、删除文件、文件/文件夹重命名、文件/文件夹移动等。 这些...

    xyj
  • 代码保存

    如果你使用的Office是2007版本以上的,在新建的Excel文件里录制完成代码后,在保存文件的时候会出现如下提示:

    xyj
  • Linux文件及文件I/O

    版权声明:本文为博主原创文章,转载请注明博客地址: https://blog.csdn.ne...

    zy010101
  • 系统编程-简洁而不简单的文件操作

    我们都听过Linux下一切皆文件,实际上无论是普通的文件读写,还是网络IO读写,它们都有着类似的操作过程。本文通过基本文件IO操作,来了解Linux“一切文件”...

    编程珠玑
  • 系统编程-文件读写这件小事

    在《系统编程-文件IO》中简单介绍了文件I/O的基本流程,无论选项或者参数多么变化多端,其流程大抵相同,不过是获取文件描述符,用描述符进行操作,关闭描述符,三步...

    编程珠玑
  • (24/24) webpack小案例--自己动手用webpack构建一个React的开发环境

    通过前面的学习,对webpack有了更深的认识,故此节我们就利用前面相关知识自己动手用webpack构建一个React的开发环境,就算是一个小案例吧。

    wfaceboss
  • Android系统启动——7附录1:Android属性系统

    属性系统在Android 系统中大量使用,用来保存系统级别的设置或者在进程间传递一些简单的信息。每个属性由属性名称和属性值组成,名称通常是一串‘.’分割的字符串...

    隔壁老李头
  • 命令行查看网络网速与点对点测速

    本文由腾讯云+社区自动同步,原文地址 https://stackoverflow.club/article/cli_network_speed/

    羽翰尘
  • VFS四大对象之四-struct file

    继上一篇文章: http://yehe.isd.com/column/support-plan/article-edit/93709 四、file结构体 文件对...

    233333

扫码关注云+社区

领取腾讯云代金券