文件操作——查找遍历
时间:2022-07-22
本文章向大家介绍文件操作——查找遍历,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前面说过了文件的读取、写入,那么在操作文件之前,一般我们需要找到操作的文件的路径,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的时候,一定要记得带上路径。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 在机器学习回归问题中,你应该使用哪种评估指标?
- 6.深入k8s:守护进程DaemonSet及源码分析
- 无所不能的Embedding 1 - Word2vec模型详解&代码实现
- 【JS】676- 1.1w字 | 初中级前端 JavaScript 自测清单 - 2
- matplotlib基础绘图命令之imshow
- 聊聊dubbo-go的broadcastCluster
- 爬取博客园文章
- 配置Python开发环境
- 部署Python应用
- 重写ThreadPoolTaskExecutor
- 聊聊dubbo-go的forkingCluster
- 创建多线程的4种方式
- 线程通讯wait¬ify
- 最新深度学习框架——OneFlow:新分布式训练(附源代码)
- 多线程相关概念