对FileSystemObject一直略有耳闻,VBA爱好者常常简称为FSO对象。

在Scripting类库中有三个可以直接使用NEW关键字实例化的类,第一个就是常用的字典,第三个是FSO。

一、FSO对象引用的方法:

前期绑定:先要引用类库文件scrrun.dll,写代码的时候有智能提示。如果程序发给别人用,就要用后期绑定方式。

Dim fso As New Scripting.FileSystemObject

后期绑定:不需要引用类库文件,但没有智能提示。

Set fso = CreateObject("Scripting.FileSystemObject")

二、使用FSO对象的CreatTextFile方法

      可以使用该方法创建一个文本文件。第5行执行后,文本文件已经创建在硬盘中。

 Sub CreateAndWrite()

 Dim fso As New Scripting.FileSystemObject
Dim wfsm As Scripting.TextStream
Set wfsm = fso.CreateTextFile("d:\test.txt", True)
wfsm.WriteLine (Now) wfsm.Close End Sub

1、CreatTextFile语法:object.CreateTextFile(filename[, overwrite[, unicode]])。

参数1:要创建的文件的全路径,字符串。

参数2:Bool值,如果相同路径存在同名文件,是否覆盖。

参数3:Bool值,用什么编码写入文件,默认是ASCII(true),也可以是unicode

     返回值是TextStream类型对象,也就是本文的另一个重点,文本流

2、为方便使用文本流对象,我在第4行做了显式的类型声明wfsm。

3、使用wfsm的WriteLine方法,把字符串按行写入文件。本例是把本机的时间写入文件。

4、Colse方法关闭流。

三、使用OpenTextFile方法

这个方法的功能很多,可以读、写、追加写入。如果目标文件不存在还可以根据需求创建文件。

语法:object.OpenTextFile(filename[, iomode[, create[, format]]])

                                  参数1:要创建的文件的全路径,字符串。

参数2:常数。ForReading读取、ForWriting写入,ForAppending在文件末尾追加写入

参数3:Bool值,如果文件不存在,是否创建。 默认是False不创建。

参数4:以什么编码形式打开文件

 Sub OpenTextAndWriteRead()
Dim fso As New Scripting.FileSystemObject
Dim rfsm As Scripting.TextStream
Dim wfsm As Scripting.TextStream
Dim str As String '创建一个流用来写入
Set wfsm = fso.OpenTextFile("d:\test.txt", ForAppending)
n =
Do
wfsm.WriteLine ("第" & n & "行:" & Now)
n = n +
Loop Until n =
wfsm.Close '创建一个流用来读取
Set rfsm = fso.OpenTextFile("d:\test.txt", ForReading)
Do
str = rfsm.ReadLine
Debug.Print str
Loop Until rfsm.AtEndOfLine rfsm.Close End Sub

第8-13行,创建一个文本流追加写入文件。第17-21行,把上面写入的内容读出出来。AtEndofLine判断是否到了末尾行号

四、文本流TextStream的一些方法和属性

    本文标题虽然是FSO,但读取和写入文件实际使用的都是TextStream的对象

1、文本流TextStream类型不能用New创建实例。但可以像例子中使用FSO的某些方法创建,也可以使用File对象的某些方法创建(见后)。

a.不同的创建方式得到不同的流对象。

b.如果创建的是读取的流,但使用了Write方法,在运行时就会报错。

c.相同方式创建的同一文本文件的多个流不能共存。下面的代码运行到第7行会报错"权限的拒绝"。其它要注意的特性可自行测试

 Sub Test()
Dim fso As New Scripting.FileSystemObject
Dim wfsm1 As Scripting.TextStream
Dim wfsm2 As Scripting.TextStream Set wfsm1 = fso.OpenTextFile("d:\test.txt", ForAppending)
Set wfsm2 = fso.OpenTextFile("d:\test.txt", ForAppending) wfsm1.Close
wfsm2.Close
End Sub

2、文本流有几个不同的读取和写入方法(如上所述要注意和流的类型相匹配,否则会在运行时报错)。

读取:Read,ReadAll,ReadLine
     写入:Write,WriteLine,WriteBlankLines

3、文本流还有一些实用的属性。

AtEndOfLine:        文件指针正好在行尾标记,则返回TRUE
    AtEndOfStream:   文件指针在文件末尾,则返回TRUE
    Line:                   返回一个 TextStream 文件中的当前行号。
    Column:                返回 TextStream 文件中当前字符位置的列号。

4、流在使用后不要忘了Close

五、使用File对象创建TextStream

     行号3定义File类型,行号6使用Fso的GetFile方法得到File对象。WriteBlankLines(2)写入2行空行。

 Sub FileAndTextStream()
Dim fso As New Scripting.FileSystemObject
Dim fe As Scripting.file Set fe = fso.GetFile("d:\test.txt") fe.OpenAsTextStream(ForWriting).WriteLine ("今天天气好晴朗")
fe.OpenAsTextStream(ForAppending).WriteBlankLines ()
fe.OpenAsTextStream(ForAppending).WriteLine ("处处好风光")
Debug.Print fe.OpenAsTextStream(ForReading).ReadAll End Sub

六、其他

使用File对象还可以做更多其他事情,比如获取文件名、文件的创建时间等。

FSO也还有许多非常有用的方法,比如获取目录下的所有文件、判断目录下是否存在某个特定文件等。

不再赘述。

VBA中的FileSystemObject对象(FSO)和文本流的更多相关文章

  1. VB 中定义FileSystemObject对象,要先添加对象

     存取文件的方法有很多种,可以使用上述VB提供的函数,使用Windows API函数等等,但是最简单的方法是使用FileSystemObject对象. 1.使用FileSystemObject对象 F ...

  2. Scripting.FileSystemObject对象的详细技巧指南

    Scripting.FileSystemObject对象的详细技巧指南 FileSystemObject对象提供对计算机文件系统的访问: powered by 25175.net 在代码内操作文本文件 ...

  3. js中的FileSystemObject使用(FSO)

    Set fso = Server.CreateObject("Scripting.FileSystemObject") 定义FSO对象 fso.CreateFolder(Serve ...

  4. 处理Selection对象和Range对象——Word VBA中重要的两个对象

    处理Selection对象和Range对象——Word VBA中重要的两个对象 Word 开发人员参考Selection 对象代表窗口或窗格中的当前所选内容.所选内容代表文档中选定(或突出显示)的区域 ...

  5. VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

    在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10")  VB的语法,使用参数的不一定是方法,也有可能是属性 ...

  6. ASP入门(十四)-FileSystemObject 对象

    File Access 组件中常见的对象有 FileSystemObject.TextStream.File.Folder.Drive等,其中每一个对象都有不同的属性和方法,我们将会在用到的时候进行详 ...

  7. javascript ActiveXObject FileSystemObject 对象,创建、复制、删除、读取文件等

    Javascript是网页制作中离不开的脚本语言,依靠它,一个网页的内容才生动活泼.富有朝气.但也许你还没有发现并应用它的一些更高级的功能吧?比如,对文件和文件夹进行读.写和删除,就象在VB.VC等高 ...

  8. 【JavaScript】JavaScript中的ActiveXObject对象

    JavaScript中ActiveXObject对象是启用并返回 Automation 对象的引用.    使用方法: newObj = new ActiveXObject( servername.t ...

  9. VBA中使用JavaScript脚本语言解析JSON数据

    JSON:JavaScript 对象表示法(JavaScript Object Notation) 和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如: jsstr = {" ...

随机推荐

  1. ionic之AngularJS扩展 移动开发(视图导航一)

    目录: 内联模板 : script 路由机制 : 状态机 导航视图 : ion-nav-view 模板视图 : ion-view 导航栏 : ion-nav-bar 回退按钮 : ion-nav-ba ...

  2. Openstack的配额共功能的使用

    在一个云系统中,一个项目不能无限制的使用资源,必须对项目进行配额管理,在openstack中主要的命令是nova quota-update, 但是可能会提示的错误: DEBUG (shell:740) ...

  3. 文字处理TX Text Control X10独家揭秘(二):图像占位符合并

    在前面一篇文章<TX Text Control X10独家揭秘(一):数据源自动处理>中已经对即将发布的TX Text Control X10的数据源自动处理做了一些了解,接下来述说它的图 ...

  4. linux设备驱动归纳总结(五):4.写个简单的LED驱动【转】

    本文转载自:http://blog.chinaunix.net/uid-25014876-id-84693.html linux设备驱动归纳总结(五):4.写个简单的LED驱动 xxxxxxxxxxx ...

  5. ASP.NET MVC下的四种验证编程方式【转】

    ASP.NET MVC采用Model绑定为目标Action生成了相应的参数列表,但是在真正执行目标Action方法之前,还需要对绑定的参数实施验证以确保其有效 性,我们将针对参数的验证成为Model绑 ...

  6. BZOJ 1588:营业额统计(Splay)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1588 题意:中文题意. 思路:每一个点每一个点插入Splay,然后插入新的一个点之后,查这个节点的前 ...

  7. linux进程调度方法(SCHED_OTHER,SCHED_FIFO,SCHED_RR)

    转于:http://blog.csdn.net/maray/article/details/2900689 Linux内核的三种调度方法: 1,SCHED_OTHER 分时调度策略, 2,SCHED_ ...

  8. ACM题目————放苹果

    Description 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. Input 第一行是测试数据的数目t(0 ...

  9. [转载]Android系统开机画面的实现

    Android系统开机画面分为下面三个阶段: 1.开机图片:Android内核是基于标准内核的,对linux比较熟悉,特别是在开发板上移植过Linux系统的人就知道在内核引导过程中会显 示出一 个小企 ...

  10. 关于easyUI在子页面增加显示tabs的一个问题

    在父页面点个链接能动态看到子页面的情况太简单,请看easyUI官网:http://www.jeasyui.com/tutorial/layout/tabs2.php 现在说的是在子页面点个按钮也能触发 ...