VBA使用FileSystemObject将读取或写入文本.docx_第1页
VBA使用FileSystemObject将读取或写入文本.docx_第2页
VBA使用FileSystemObject将读取或写入文本.docx_第3页
VBA使用FileSystemObject将读取或写入文本.docx_第4页
VBA使用FileSystemObject将读取或写入文本.docx_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VBA使用FileSystemObject将读取或写入文本文件(一) 分类: VBA 2010-08-12 11:40 1211人阅读 评论(0) 收藏 举报 有时,我们需要将一个文本文件中的数据读取到Excel单元格中,或将指定单元格的内容按指定的格式导出到文本文件中,这时,我们就需要使用Scripting.FileSystemObject对象来进行操作。在接下来的几篇里我们介绍如何使用FileSystemObject对象操作文本文件的。工欲善其事,必先利其器,那么我们就先花几篇文章来详细介绍下FileSystemObject对象。 一、如何创建FileSystemObject对象 在VBA中,是通过CreateObject函数返回FileSystemObject对象。 示例:Dim fso As ObjectSet fso=CreateObject(Scripting.FileSystemObject) 二、FileSystemObject主要方法介绍 1、CreateTextFile方法:用于创建一个指定文件名,并返回一个可操作的TextStream对象。 语法:object.CreateTextFile(filename,overwrite,unicode)参数说明object必需的。为一个FileSystemObject对象的名字filename必需的,一个带路径的字符串表达式,为创建的文件overwrite可选的。Boolean值,如果为True表示覆盖已存在的文件,False表示不能覆盖。默认值为False。unicode可选的。Boolean值,表示文件是作为一个Unicode文件创建的还是作为一个ASCII文件创建的。如果为True则表示作为Unicode文件创建,False表示作为ASCII文件创建。默认值为False。 示例1:在C:/FSOTest/中创建一个名为testFile的文本文件,并写入一行“CreateTextFile Test”:Sub CreateFile() Dim sFile As Object, FSO As Object Set FSO = CreateObject(Scripting.FileSystemObject) Set sFile = FSO.CreateTextFile(C:/FSOTest/TestFile.txt,True) sFile.WriteLine (CreateTextFile Test) sFile.Close Set sFile = Nothing Set FSO = NothingEnd Sub 2、DeleteFile方法:用于删除一个指定的文件。如果指定的文件不存在,则返回一个错误信息。 语法:object.DeleteFile(filespec,force)参数说明object必需的。为一个FileSystemObject对象filespec必需的。要删除文件的名字。可以在最后的路径部件中包含通配符force可选的。Boolean值,如果要删除具有只读属性设置的文件,则为True。如果不能删除具有只读属性设置的文件,则为False。默认值为False 示例2:删除示例1中创建的文本文件。Sub DeleteFile() Dim fso As Object Set fso = CreateObject(Scripting.FileSystemObject) fso.DeleteFile (C:/FSOTest/TestFile.txt)End Sub 3、FileExists方法:判断指定的文件是否存在。如果存在,则返回True,若不存在,则返回False 语法:object.FileExists(filespec)参数说明object必需的。为一个FileSystemObject对象filespec必需的。要确定是否存在的文件名。如果认为文件不在当前文件夹中,必须提供一个带完整的路径说明。 示例3:判断“C:/FSOTest/”中是否存在文件“testfile.txt”:Sub FileExist() Dim fso As Object, blnExist As Boolean Set fso = CreateObject(Scripting.FileSystemObject) blnExist = fso.FileExists(C:/FSOTest/testfile.txt) MsgBox blnExistEnd Sub 4、OpenTextFile方法:打开一个指定的文件并返回一个TextStream对象,该对象可能于对文件进行读操作或追加操作。 语法:object.OpenTextFile(filename,iomode,create,format)参数说明object必需的。始终是一个 FileSystemObject 的名字filename必需的。为一个文件名,包含完整路径说明iomode可选的。表示输入/输出方式。可为两个常数之一:ForReading或 ForAppending。create可选的。Boolean 值,它表示如果指定的 filename 不存在是否可以创建一个新文件。如果创建新文件,其值为 True。若不创建文件其值为 False。缺省值为 False。format可选的。三种 Tristate 值之一,用于指示打开文件的格式。如果省略,则文件以 ASCII 格式打开。 参数iomode可以设置为以下值:常数值说明ForReading1打开一个只读文件。不能对此文件进行写操作ForWriting2打开一个可读写操作的文件,并删除原有文本内容ForAppending8打开一个文件并写到文件的尾部 参数format可以设置为以下值:常数值说明TristateUseDefault-2使用系统缺省打开文件TristateTrue-1以Unicode格式打开文件TristateFalse0以ASCII格式打开文件 示例4:本例说明了使用OpenTextFile方法打开testfile.txt文件,并添加文字“OpenTextFile Test”:Sub OpenTextFile() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.Write OpenTextFile Test sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub下一节VBA使用FileSystemObject将读取或写入文本文件(二) 分类: VBA 2010-08-12 11:42 951人阅读 评论(0) 收藏 举报 在上一节“VBA使用FileSystemObject将读取或写入文本文件(一)”中我们详细介绍了如何创建一个FileSystemObject对象及其对象。那么,在这一节里,将详细介绍FileSystemObject对象在创建或打开文本文件后返回的TextStream对象的一些属性及方法。 三、FileSystemObject对象返回的TextStream对象的属性及方法说明: 创建TextStream对象示例:Dim sFile As Object, fso As ObjectSet fso = CreateObject(Scripting.FileSystemObject)Set sFile = fso.CreateTextFile(C:/TestFile.txt) 示例中的sFile便为TextStream对象。 (一)TextStream属性: 1、Line属性:只读属性,返回一个TextStream文件中的当前行号。文件初次打开后,在写任何东西之彰,Line的值为1。 语法:object.Line 2、AtEndOfStream属性:只读属性,如果文件指针在TextStream文件末尾,则返回True;否则返回False。 语法:object.AtEndOfStream 3、AtEndOfLine属性:只读属性,如果文件指针在TextStream文件行尾标记的前面,则返回True;否则返回False。 语法:object.AtEndOfLine (二)TextStream方法: 1、WriteLine方法:写入一个指定的字符和换行符到一个TextStream文件中。 语法:object.WriteLine(string)Object:必需的。表示一个TextStream对象的名字。string:可选的。要写入文件的正文。如果省略,一个换行符被写入文件中。 示例:打开一个文本文件并在文本文件中写入一些字符。Sub WriteLine() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.WriteLine WriteLine Test sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 2、Write方法:写一个指定的字符串到一个TextStream文件中。指定的字符串被写入到文件中,在每个字符串之间没有插入空格或字符。使用WriteLine方法写入一个换行符或一个以换行符为结尾的字符串。 语法:object.Write(string)object:必需的。为一个TextStream对象的名字。string:必需的。要写到文件中的字符串。 示例:下列代码将一个字符串写入到文本文件中,并实现与WriteLine方法相同的效果,即加入空格或换行符。Sub WriteTest() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending, TristateFalse) sFile.Write Write Test & vbTab & vbCrLf 同时加入一个Tab位及一个换行符 sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 3、ReadLine方法:从一个TextStream文件读取一整行(到换行符但不包括换行符)并返回得到的字符串。 语法:string=object.ReadLinestring:返回的字符串。object:一个TextStream对象。 示例:打开一个文本文件,并读取内容。Sub ReadLine() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForReading) MsgBox sFile.ReadLine sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 4、Read方法:从一个TextStream文件中读取指定数量的字符并返回得到的字符串。 语法:object.Read(characters)object:必需的。表示为一个TextStream对象的名字。characters:必需的。从文件中要读取的字符数。 示例:从一个打开的文本文件中读取5个字符。Sub ReadTest() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForReading) MsgBox sFile.Read(5) sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 5、Close方法:关闭一个打开的TextStream文件。 语法:object.Close 6、WriteBlankLines方法:写入指定数量的换行符到一个TextStream文件中。 语法:object.WriteBlankLines(lines)object:必需的。指一个TextStream对象的名字。lines:必需的。要写入的换行符数量。 示例:在一个打开的文本文件中写入两个空行。Sub WriteBlankLines() Dim fso As Object, sFile As Object Const ForReading = 1, ForWriting = 2, ForAppending = 8, TristateFalse = 0 Set fso = CreateObject(Scripting.FileSystemObject) Set sFile = fso.OpenTextFile(C:/FSOTest/testfile.txt, ForAppending) sFile.WriteBlankLines (2) sFile.Close Set fso = Nothing Set sFile = NothingEnd Sub 7、SkipLine方法:当读一个TextStream文件时跳过下一行。跳过一个是指读取放弃一行中的所有字符,一直到并包括该行的换行符。如果读的文件没有打开,则产生一个错误。语法:object.SkipLine 8、Skip方法:当读一个TextStream文件时跳过指定数量的字符。跳过的字符将不被读取。 语法:object.Skip(characters)object:必需的。表示一个TextStream对象的名字。characters:必需的。当读文件时要跳过的字符的数量。好了。这一节中介绍了TextStream对象的一些属性及方法。到这一节为止,我们就已经基本掌握了在VBA中如何使用FileSystemObject来读写文本文件的方法了。在接下来的一节里,我们将学习如何将文本文件中的数据读取到Excel中,及如何将Excel单元格中的数据写入到指定的文本文件中。中,我们将介绍FileSystemObject对象返回的TextStream对象的属性与方法,并示例如何对文本文件进行读写操作。VBA使用FileSystemObject将读取或写入文本文件(三) 分类: VBA 2010-08-12 11:45 1771人阅读 评论(0) 收藏 举报 第一节:VBA使用FileSystemObject将读取或写入文本文件(一)第二节:VBA使用FileSystemObject将读取或写入文本文件(二) 在上两节中已经详细介绍了FileSystemObject对象的一些属性及方法。那么在这一节里,我们将举例说明如何使用VBA在Excel与文本文件中的导入导出。假设我们有如下数据表及文本文件: 现在要实现在这两个文件中的数据按指定的格式进行导入导出。下面我们就先进行将EXCEL数据表中的内容导出到testfile.txt中,并按图中的格式显示。 一、导出到文本文件的示例代码:Sub Export2TxtFile() Dim fso As Object, sFile As Object, blnExist As Boolean Dim iRow As Integer, FileName As String Set fso = CreateObject(Scripting.FileSystemObject) 创建FileSystemObject对象 FileName = C:/FSOTest/testfile.txt 指定文本文件名Check_FileExist: blnExist = fso.FileExists(FileName) 判断文件是否存在 If blnExist Then If MsgBox(指定的数据文件已存在,是否覆盖原文件?, _ vbExclamation + vbYesNo, 提示信息) = vbNo Then 如果不覆盖原文件,则要求指定文件名 FileName = Application.InputBox(请输入文件名:) If FileName = False Then FileName = Sheet1.Name & !$A$1 FileName = C:/FSOTest/ & FileName & .txt GoTo Check_FileExist 再次检查文件是否存在 Else 如果是,则先删除原文件 fso.DeleteFile (FileName) End If End If Set sFile = fso.CreateTextFile(FileName) sFile.WriteLine ( & Sheet1.Range(A1).Value & ) 写入第一行数据 sFile.WriteBlankLines (1) 写入一个空白行 For iRow = 2 To Sheet1.Range(A65536).End(xlUp).Row 从单元格A2开始读取数据,到数据表结尾,写入到文本文件中 sFile.WriteLine (Sheet1.Cells(iRow, 1).Value _ & | & Sheet1.Cells(iRow, 2).Value _ & | & Sheet1.Cells(iRow, 3).Value _ & | & Sheet1.Cells(iRow, 4).Value) Next iRow If MsgBox(文件已导出。是否打开该文件?, vbYesNo + vbInformation) = vbYes Then Shell (NotePad.exe & FileName) 打开文本文件 End IfEnd Sub 二、将文本文件导入到Excel数据表中:Sub ImportFromTextFile() Dim fso As Object, sFile As Object, blnExist As Boolean Dim FileName As String, LineText As Variant, i As

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论