|
楼主 |
发表于 2009-6-12 11:26
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
第10部分 文件操作
技巧180 使用WSH处理文件
180-11 创建文本文件
如果需要将工作表中的数据保存为文本文件,可以创建一个文本文件用于保存数据。
使用CreateTextFile方法创建文本文件,如下面的代码所示。- #001 Sub CreText()
- #002 Dim MyFile As Object
- #003 Dim myStr As String
- #004 Dim j As Integer, i As Integer
- #005 Set MyFile = CreateObject("Scripting.FileSystemObject") _
- #006 .CreateTextFile(ThisWorkbook.Path & "" & "工资表.txt", True)
- #007 For i = 1 To Range("A65536").End(xlUp).Row
- #008 myStr = ""
- #009 For j = 1 To Range("IV"& i).End(xlToLeft).Column
- #010 myStr = myStr & Cells(i, j) & ","
- #011 Next
- #012 myStr = Left(myStr, (Len(myStr) - 1))
- #013 MyFile.WriteLine (myStr)
- #014 Next
- #015 MyFile.Close
- #016 Set MyFile = Nothing
- #017 End Sub
复制代码 代码解析:
CreText过程使CreateTextFile方法创建一个指定名称的文本文件并将工作表数据写入到文件内。
第5、6行代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile后使用CreateTextFile方法创建一个指定名称的文本文件。
应用于FileSystemObject对象的CreateTextFile方法创建一个指定的文件并且返回一个用于该文件读写的TextStream对象,语法如下:
object.CreateTextFile(filename[, overwrite[, unicode]])
参数object是必需的,FileSystemObject对象的名字。
参数filename是必需的,需要创建的文件名称。
参数overwrite是可选的,表示是否覆盖已存在文件。如果可被覆盖其值为True,其值为False时不能覆盖,如果省略,则已存在文件不能覆盖。
参数unicode是可选的,表示文件是作为一个Unicode文件创建的还是作为一个ASCII文件创建的。如果作为一个Unicode文件创建,其值为True,作为一个ASCII 文件创建,其值为False,如果省略,则认为是一个ASCII文件。
第7行代码逐行读取工作表数据。
第8行代码清空字符串变量myStr的内容,用来保存下一行的数据。
第9行代码遍历当前行的所有单元格。
第10行代码将当前行的所有单元格保存到字符串变量myStr中并以逗号进行分隔。
第12行代码去除保存在字符串变量myStr中当前行数据的最后一个逗号。
第13行代码使用WriteLine方法将当前行数据写入到创建的文本文件。
应用于TextStream对象的WriteLine方法写入一个指定的字符串和换行符到一个TextStream文件中,语法如下:
object.WriteLine([string])
参数object是必需的,TextStream对象的名字。
参数string是可选的,要写入文件的正文。如果省略,写入一个换行符。
第15行使用Close方法关闭打开的文本文件。
还可以使用OpenTextFile方法创建文本文件,如下面的代码所示。- #001 Sub OpenText()
- #002 Dim MyFile As Object
- #003 Dim myStr As String
- #004 Dim j As Integer, i As Integer
- #005 Set MyFile = CreateObject("Scripting.FileSystemObject") _
- #006 .OpenTextFile(ThisWorkbook.Path & "" & "工资表.txt", 8, True)
- #007 For i = 1 To Range("A65536").End(xlUp).Row
- #008 myStr = ""
- #009 For j = 1 To Range("IV" & i).End(xlToLeft).Column
- #010 myStr = myStr & Cells(i, j) & ","
- #011 Next
- #012 myStr = Left(myStr, (Len(myStr) - 1))
- #013 MyFile.WriteLine (myStr)
- #014 Next
- #015 MyFile.Close
- #016 Set MyFile = Nothing
- #017 End Sub
复制代码 代码解析:
OpenText过程使OpenTextFile方法创建一个指定名称的文本文件并将工作表数据写入到文件内。
应用于FileSystemObject对象的OpenTextFile方法打开一个指定的文件并返回一个 TextStream对象,该对象可用于对文件进行读操作或追加操作,请参阅技巧180-10。
示例中将OpenTextFile方法的iomode参数设置为8,打开文本文件后在文件的尾部进行追加操作;将create参数设置为True,如果指定的文本文件不存在则创建一个新文件。
注意 如果重复运行OpenText过程将在文本文件中重复写入工作表数据,所以OpenTextFile方法更适用于对文本文件进行追加操作。
OpenText过程的其他代码请参阅CreText过程的代码解析。
运行CreText过程和OpenText过程将在示例所在的文件夹中创建一个名称为:“工资表”的文本文件并将工作表数据读入到文件内。 |
|