在编写vba的解决方案时,经常会碰到需要读写文本文档的情况。
FileSystemObject对象提供了一系列读写文本文档的对象、属性和方法。
其中可以使用OpenTextFile方法打开一个文本文档,并返回一个TextStream对象。
它的语法如下:
object.OpenTextFile(filename[, iomode[, create[, format]]])
其中参数filename为要打开的文本文档的完整路径,
iomode参数为打开的方式,可以是以下几种:
'只读打开文本文档 Const ForReading = 1 '可写打开文本文档 Const ForWriting = 2 '追加打开文本文档,写在原文本文档的末尾 Const ForAppending = 8
format参数为以什么编码形式打开,可以是以下几种:
'以系统默认的方式打开文本文档 Const TristateUseDefault = -2 '以Unicode方式打开文本文档 Const TristateTrue = -1 '以ASCII方式打开文本文档 Const TristateFalse = 0
create参数表示如果filename参数指定的文件不存在时,是否可以新建一个文本文档,如果为True表示新建,如果为False表示不新建,如果省略,则不新建。
以下是一个通用的通过选择指定的文本文档,然后打开读取的vba代码:
'只读打开文本文档 Const ForReading = 1 '可写打开文本文档 Const ForWriting = 2 '追加打开文本文档,写在原文本文档的末尾 Const ForAppending = 8 '以系统默认的方式打开文本文档 Const TristateUseDefault = -2 '以Unicode方式打开文本文档 Const TristateTrue = -1 '以ASCII方式打开文本文档 Const TristateFalse = 0 Sub qq1722187970() Excel.Application.ScreenUpdating = False Excel.Application.Calculation = xlCalculationManual Excel.Application.DisplayAlerts = False Dim sPath As String '弹出选择文件夹对话框 sPath = GetPath '如果选中了具体的文件夹 If Len(sPath) Then Dim oFSO As Object Dim oTextStream As Object Set oFSO = CreateObject("Scripting.FileSystemObject") With oFSO Set oTextStream = .OpenTextFile(sPath, ForReading, True, TristateUseDefault) With oTextStream '开始读取操作 End With End With End If Excel.Application.ScreenUpdating = True Excel.Application.Calculation = xlCalculationAutomatic Excel.Application.DisplayAlerts = True End Sub Function GetPath() As String '声明一个FileDialog对象变量 Dim oFD As FileDialog ' '创建一个选择文件对话框 Set oFD = Application.FileDialog(msoFileDialogFilePicker) '创建一个选择文件夹对话框 ' Set oFD = Application.FileDialog(msoFileDialogFolderPicker) '声明一个变量用来存储选择的文件名 Dim vrtSelectedItem As Variant With oFD '允许选择多个文件 .AllowMultiSelect = True '使用Show方法显示对话框,如果单击了确定按钮则返回-1。 If .Show = -1 Then '遍历所有选择的文件 For Each vrtSelectedItem In .SelectedItems '获取所有选择的文件的完整路径,用于各种操作 GetPath = vrtSelectedItem Next '如果单击了取消按钮则返回0 Else End If End With '释放对象变量 Set oFD = Nothing End Function
发表评论