Option Explicit Private Sub Form_Click() '声明变量为对象变量 Dim objA As Object, objB As Object 'CreateObject是函数,可以创建ActiveX对象并返回对该对象的引用 '用Set将对象引用赋给对象变量 Set objA = CreateObject("Scripting.FileSystemObject") 'CreateTextFile方法指定文件名返回一个用于该文件读写的文本流对象 Set objB = objA.CreateTextFile("c:\FSO.txt", True) 'WriteLine方法写入指定的字符串和换行符到文本流文件中 objB.WriteLine ("文件系统对象的应用") 'Close关闭打开的文本流文件 objB.Close '文件系统对象的CopyFile方法可以复制文件 objA.CopyFile "c:\FSO.txt", "d:\FSO.txt" '文件系统对象的DeleteFile方法可以删除文件 objA.DeleteFile "c:\FSO.txt" End Sub
'例:文件系统对象_文本流 Option Explicit Private Sub Form_Click() Dim objA As New FileSystemObject Dim objB As Object Dim objC As File Dim strS As String '利用文件系统对象的FileExists方法判断文本流对象是否存在 '如果存在则利用文件系统对象的DeleteFile方法删除 If objA.FileExists("D:\TestStream.TXT") = True Then _ objA.DeleteFile ("D:\TestStream.TXT") '利用文件系统对象的OpenTextFile方法建立文本流对象 Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForAppending, True, 0) '文本流对象的写入 objB.Write ("星期一安排学术报告") objB.WriteBlankLines (3) objB.WriteLine ("星期二安排研究生答辩") objB.WriteBlankLines (2) objB.WriteLine ("星期三安排现场调研") '文本流对象的关闭 objB.Close '利用文件系统对象的GetFile方法取得文件对象 Set objC = objA.GetFile("D:\TestStream.TXT") '文件对象的复制 objC.Copy ("F:\TestStream.TXT") '利用文件系统对象的GetFile方法取得复制后的文件对象 Set objC = objA.GetFile("F:\TestStream.TXT") '利用文件系统对象的OpenTextFile方法打开文本流对象 Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForReading, , 0) '利用文本流对象的AtEndOfStream属性判断是否到文件结尾 '利用文本流对象的ReadAll方法读全部文件,并利用信息框显示 Do While objB.AtEndOfStream <> True strS = objB.ReadAll MsgBox strS Loop '关闭文本流对象 objB.Close '设定屏幕打印字体和打印位置 Form1.FontName = "隶书" Form1.FontSize = 36 CurrentX = 2000 CurrentY = 1500 Form1.Print "大功告成!" End Sub
'例:文本流搜索 模块中内容: '文件系统对象_文本流搜索 Option Explicit Public vntResult() As Variant Function STFiles(strPath As String, strSearch As String) As Variant() Dim objFSO As New FileSystemObject Dim objFil As File Dim objTS As TextStream Dim lngPos As Long, lngCount As Long ReDim vntResult(50) '在路径strPath所有文件中查找扩展名为TXT的每一个文件 For Each objFil In objFSO.GetFolder(strPath).Files If UCase(objFSO.GetExtensionName(objFil.Path)) = "TXT" Then '如果扩展名为TXT则打开该文件 Set objTS = objFil.OpenAsTextStream(ForReading) '在objTS.ReadAll中从第1个字符起查找字符strSearch最先出现的位置 lngPos = InStr(1, objTS.ReadAll, strSearch, vbTextCompare) '关闭此文件 objTS.Close '如果找到所要搜索的字符串 If lngPos > 0 Then '重新打开该文件 Set objTS = objFil.OpenAsTextStream(ForReading) '将指针移到所要搜索的字符最先出现的位置 objTS.Skip lngPos - 1 '文件计数器加1 lngCount = lngCount + 1 '如果文件计数器超过vntResult的上界 If lngCount > UBound(vntResult) Then ReDim Preserve vntResult(UBound(vntResult) + 50) End If '利用Array函数为vntResult变体数组赋值 vntResult(lngCount) = Array(objFil.Path, objTS.Line, objTS.Column) '关闭该文件 objTS.Close End If End If Next ReDim Preserve vntResult(lngCount) STFiles = vntResult End Function 窗体内容: '文件系统对象_文本流搜索 Option ExplicitPrivate Sub Form_Click() Dim vntP() As Variant Dim intI As Integer '在F盘的所有TXT文件中搜索第一个“星期”所出现的位置 vntP() = STFiles("F:", "星期") '将出现位置放入列表框 For intI = 1 To UBound(vntP) List1.AddItem "路径为" & vntP(intI)(0) & _ " 在第" & vntP(intI)(1) & "行和第" & _ vntP(intI)(2) & "列" Next End Sub
Private Sub Form_Click()
'声明变量为对象变量
Dim objA As Object, objB As Object
'CreateObject是函数,可以创建ActiveX对象并返回对该对象的引用
'用Set将对象引用赋给对象变量
Set objA = CreateObject("Scripting.FileSystemObject")
'CreateTextFile方法指定文件名返回一个用于该文件读写的文本流对象
Set objB = objA.CreateTextFile("c:\FSO.txt", True)
'WriteLine方法写入指定的字符串和换行符到文本流文件中
objB.WriteLine ("文件系统对象的应用")
'Close关闭打开的文本流文件
objB.Close
'文件系统对象的CopyFile方法可以复制文件
objA.CopyFile "c:\FSO.txt", "d:\FSO.txt"
'文件系统对象的DeleteFile方法可以删除文件
objA.DeleteFile "c:\FSO.txt"
End Sub
Option Explicit
Private Sub Form_Click()
Dim objA As New FileSystemObject
Dim objB As Object
Dim objC As File
Dim strS As String
'利用文件系统对象的FileExists方法判断文本流对象是否存在
'如果存在则利用文件系统对象的DeleteFile方法删除
If objA.FileExists("D:\TestStream.TXT") = True Then _
objA.DeleteFile ("D:\TestStream.TXT")
'利用文件系统对象的OpenTextFile方法建立文本流对象
Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForAppending, True, 0)
'文本流对象的写入
objB.Write ("星期一安排学术报告")
objB.WriteBlankLines (3)
objB.WriteLine ("星期二安排研究生答辩")
objB.WriteBlankLines (2)
objB.WriteLine ("星期三安排现场调研")
'文本流对象的关闭
objB.Close
'利用文件系统对象的GetFile方法取得文件对象
Set objC = objA.GetFile("D:\TestStream.TXT")
'文件对象的复制
objC.Copy ("F:\TestStream.TXT")
'利用文件系统对象的GetFile方法取得复制后的文件对象
Set objC = objA.GetFile("F:\TestStream.TXT")
'利用文件系统对象的OpenTextFile方法打开文本流对象
Set objB = objA.OpenTextFile("D:\TestStream.TXT", ForReading, , 0)
'利用文本流对象的AtEndOfStream属性判断是否到文件结尾
'利用文本流对象的ReadAll方法读全部文件,并利用信息框显示
Do While objB.AtEndOfStream <> True
strS = objB.ReadAll
MsgBox strS
Loop
'关闭文本流对象
objB.Close
'设定屏幕打印字体和打印位置
Form1.FontName = "隶书"
Form1.FontSize = 36
CurrentX = 2000
CurrentY = 1500
Form1.Print "大功告成!"
End Sub
模块中内容:
'文件系统对象_文本流搜索
Option Explicit
Public vntResult() As Variant
Function STFiles(strPath As String, strSearch As String) As Variant()
Dim objFSO As New FileSystemObject
Dim objFil As File
Dim objTS As TextStream
Dim lngPos As Long, lngCount As Long
ReDim vntResult(50)
'在路径strPath所有文件中查找扩展名为TXT的每一个文件
For Each objFil In objFSO.GetFolder(strPath).Files
If UCase(objFSO.GetExtensionName(objFil.Path)) = "TXT" Then
'如果扩展名为TXT则打开该文件
Set objTS = objFil.OpenAsTextStream(ForReading)
'在objTS.ReadAll中从第1个字符起查找字符strSearch最先出现的位置
lngPos = InStr(1, objTS.ReadAll, strSearch, vbTextCompare)
'关闭此文件
objTS.Close
'如果找到所要搜索的字符串
If lngPos > 0 Then
'重新打开该文件
Set objTS = objFil.OpenAsTextStream(ForReading)
'将指针移到所要搜索的字符最先出现的位置
objTS.Skip lngPos - 1
'文件计数器加1
lngCount = lngCount + 1
'如果文件计数器超过vntResult的上界
If lngCount > UBound(vntResult) Then
ReDim Preserve vntResult(UBound(vntResult) + 50)
End If
'利用Array函数为vntResult变体数组赋值
vntResult(lngCount) = Array(objFil.Path, objTS.Line, objTS.Column)
'关闭该文件
objTS.Close
End If
End If
Next
ReDim Preserve vntResult(lngCount)
STFiles = vntResult
End Function
窗体内容:
'文件系统对象_文本流搜索
Option ExplicitPrivate Sub Form_Click()
Dim vntP() As Variant
Dim intI As Integer
'在F盘的所有TXT文件中搜索第一个“星期”所出现的位置
vntP() = STFiles("F:", "星期")
'将出现位置放入列表框
For intI = 1 To UBound(vntP)
List1.AddItem "路径为" & vntP(intI)(0) & _
" 在第" & vntP(intI)(1) & "行和第" & _
vntP(intI)(2) & "列"
Next
End Sub