如何在vba中用OpenTextFile方法读写文本文档?

在编写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
       

发表评论