Excel VBA 利用FileSystemObject类处理文件

FileSystemObject介绍

FileSystemObject是Windows Script Host Object Model对象模型的成员,能够对文件进行方便的基本操作,读取,写入,提取关键字等操作,读取之后使用left(),right(),mid()函数可轻松的提取关键词并写入excel表格中,若与Microsoft VBScript Regular Expressions 5.5结合,可有更强的表现。

使用方法有前期绑定和后期绑定:

  1. 前期绑定 ,在Visual Basic编辑器中选择工具菜单>>引用,将弹出如下对话框,选中红框中的选项,点击确定。
  2. 后期绑定方法是creatobject(“Scripting.Filesystemobject”)

FileSystemObject的应用

下面的一段代码展示了利用FileSystemObject类获取指定目录下的文件和子目录,并对每个文件进行打开读取操作

Sub ReadTxtFile()Dim fso As FileSystemObject '定义fso对象Dim fld As Folder '定义文件夹对象Dim subflds As Folders '定义文件夹对象的集合Dim fls As Files '定义文件对象的集合Dim f As File  '定义文件对象Dim c As IntegerDim dpath As String '定义要操作路径Dim txtstr As TextStream '文本流对象dpath = "C:\Users\Administrator\Desktop\shell" '指定操作目录
'    Set fso = New FileSystemObject  '前期绑定设置fso对象Set fso = creatobject("Scripting.Filesystemobject")  '后期绑定'Function GetFolder(FolderPath As String) As Folder '函数原型Set fld = fso.GetFolder(dpath) '设置文件夹对象Set subflds = fld.SubFolders() '设置子目录对象集合'Debug.Print subflds.Count  '获取子目录的数量For Each d In subflds'Debug.Print d.Name  '输出每一个子目录名Next'Function OpenTextFile(FileName As String, [IOMode As IOMode = ForReading], [Create As Boolean = False], [Format As Tristate = TristateFalse]) As TextStream    Set fls = fld.Files  '设置文件对象集合
'    Debug.Print fls.Count '获取文件的数量
'遍历所有文件并读取For Each f In flsSet txtstr = fso.OpenTextFile(fso.BuildPath(dpath, f.Name), ForReading, False, TristateFalse) Debug.Print txtstr.ReadAll() '读取全部文本内容
'一次读取一行文本内容
'        Do While txtstr.AtEndOfStream <> True'Debug.Print txtstr.ReadLine()
'        Looptxtstr.Close '关闭文本流对象Next f'将对象值设为nothing    Set f = Nothing  Set fld = NothingSet fls = NothingSet fso = Nothing
End Sub

下面介绍笔者在使用其复制文件时提示报错的解决办法

CopyFile的过程原型,共有3个参数,最后一个参数为True时会覆盖目标路径下的文件
'Sub CopyFile(Source As String, Destination As String, [OverWriteFiles As Boolean = True])
使用方法: fso.CopyFile “原路径/filename”, “目标路径filename”, True
其中原路径下的filename与目标路径下的filename可以不相同,也可以相同,但不能省略,否则就会报错,true表示覆盖已存在的文件

CopyFolder 使用方法同上
fso.CopyFolder “原路径/目录”, “目标路径目录”, True

OpenTextFile函数说明

object.OpenTextFile(FileName As String, [IOMode As IOMode = ForReading], [Create As Boolean = False], [Format As Tristate = TristateFalse]) As TextStream

object:必选参数,为FileSystemObject对像
FileName:必选参数,要打开的文件名
IOMode :可选参数,可选择ForReading(以只读方式打开),ForWriting(以写入模式打开),ForAppending(以追加模式打开)
Create :可选参数,默认为False;当原文件不存在,此参数为True时,会自动创建文件
Format :可选参数,TristateFalse(以ASCII格式打开文件),TristateTrue(以unicode格式打开文件),TristateUseDefault(系统自动选择打开方式)

BuildPath函数说明

使用方法object.BuildPath(Path As String, Name As String) As String
object:必选参数,为FileSystemObject对像
Path :必选参数,路径,字符类型
Name :必选参数,文件或文件夹名,字符类型

若觉得不错,还请点赞,谢谢

Excel VBA 利用FileSystemObject处理文件相关推荐

  1. 利用Excel VBA SQL做特殊文件浏览器

    1.利用JamShellBrowser for ActiveX '转载请注明:本文来自:Excel吧 (www.excelba.com) 详细出处参考:http://www.excelba.com/A ...

  2. Excel VBA中判断word文件是否打开,未打开则打开该文件

    需求与场景 在Excel的VBA中,打开Word文件是比较容易的,但判断某个word文件是否已经打开,则有些小坑需要注意. 因为工作需求,要把Excel中的数据写入到指定的word文件里(用链接的方式 ...

  3. vba 用adodb连接mysql_【VBA研究】Excel VBA利用ADODB访问数据库使用小结

    [转自] http://blog.csdn.net/iamlaosong/article/details/18043433 作者:iamlaosong ▲连接Oracle数据库 Set cnn = C ...

  4. vba访问文件服务器,使用Excel VBA获取共享点文件夹的内容

    通常,我使用这段代码来检索VBA中文件夹的内容. 但这在共享点的情况下不起作用. 我能怎么做 ? Dim folder As folder Dim f As File Dim fs As New Fi ...

  5. 【Excel VBA】遍历获取文件夹下所有文件——每月自动汇总考勤数据实例

    纲举目张 说明 关键技术点:Dir函数 代码code 运行效果图 使用说明 说明 本次所讲的遍历获取某文件夹下所有文件,其实是我的<每月自动汇总考勤数据>案例中的其中一个知识点,近期我将会 ...

  6. Excel VBA利用事件对图表自动更新

    Private Sub Workbook_SheetActivate(ByVal sh As Object) Dim shrt As Worksheet Dim rg As Range Dim rgC ...

  7. 提取文件名+复制+改名+批量创建文件程序(Excel VBA版)

    用Excel VBA做了个文件处理小工具,集合了文件名提取.文件复制.改名及批量创建文件.搜索复制文件的功能. (注:如果是规则改名,建议使用 拖把更名器,使用起来更直观,下载链接中附拖把更名器程序) ...

  8. ubuntu复制文件到另一个文件夹_Excel VBA之FSO-2.2文件夹的复制

    Excel VBA之FSO-2.2文件夹的复制 前景提要 昨天我们首次接触了ADO中FSO的使用,并演示了如何通过FSO来创建一个文件夹,删除文件夹以及判断文件夹是否存在的操作,虽然还是再说文件夹,但 ...

  9. vba移动文件_Excel VBA之FSO-2.3文件夹的移动

    Excel VBA之FSO-2.3文件夹的移动 前景提要 我们之前接触了如何通过FSO来实现文件夹的复制操作,此操作需要注意的一点就是如果当前文件夹中有历史版本的同名文件夹的话,他会直接覆盖原来的数据 ...

最新文章

  1. js前台检测上传图片大小的总结
  2. BZOJ2209: [Jsoi2011]括号序列
  3. 挪车+php,还在苦苦寻找占你车位的人?关注这个微信号实现“一键挪车”
  4. java 测试工具 oracle_几种测试工具的简单介绍
  5. 1-第一个pyqt5程序
  6. java实现把数据写入到Excel并下载
  7. 【Docker】安装tomcat并部署应用
  8. 【离散数学】幂集的求解
  9. 开课吧Java教程什么是类集接口
  10. GooglePlay应用上架流程
  11. JavaScript知识之正则表达式(RegExp)
  12. SparkConf 配置的概念和用法
  13. Android SDK安装及配置模拟器
  14. 【附源码】Python计算机毕业设计芮城县十全十美火锅店点餐系统
  15. 奥塔在线:vsftpd服务如何开启访问日志
  16. PTA 7 龙舌兰酒吧
  17. Qt 调用echo命令写文件失效
  18. 剪裁头像裁剪遇到关于小米华为适配问题的解决
  19. 数据应用系列(1)-ab测试
  20. P4965 薇尔莉特的打字机

热门文章

  1. 坯子库曲面推拉教程_SketchUp创建建筑曲面教堂Philip Johnson
  2. TP5.1/hinkcmf5.1使用think-queue实现异步延迟队列
  3. 基于划分的聚类----K-means算法使用(R语言)
  4. 对于js面向对象的理解
  5. Matlab:在 GUIDE 中设置 UI 窗口大小
  6. 009 for 循环画星星
  7. UITabBarController的selectedIndex属性不起作用?
  8. 基于 TCP 的 Qt 网络通信
  9. 有关路由汇总(路由的包含与被包含关系)的一点小感悟
  10. Laravel 好玩、好用扩展推荐(持续更新)