VBA使用FileSystemObject将读取或写入文本文件(三)

第一节: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 If
End Sub

    二、将文本文件导入到Excel数据表中:

Sub ImportFromTextFile()
    Dim fso As Object, sFile As Object, blnExist As Boolean
    Dim FileName As String, LineText As Variant, i As Integer, iCol As Integer
    Const ForReading = 1
    Set fso = CreateObject("Scripting.FileSystemObject")    '创建FileSystemObject对象
    FileName = "C:/FSOTest/testfile.txt"     '指定文本文件名
    blnExist = fso.FileExists(FileName) '判断文件是否存在,如果不存在,则退出过程
    If Not blnExist Then MsgBox "文件不存在!": Exit Sub
    Set sFile = fso.OpenTextFile(FileName, ForReading) '创建并打开名为sFile的TextStream对象
    '读取第一行数据
    Sheet2.Range("A1").Value = Replace(Replace(sFile.ReadLine, "[", ""), "]", "")
    sFile.SkipLine  '跳过第二行的空行
    i = 2   '设置输入单元格的起始行号
    Do While Not sFile.AtEndOfStream    '如果不是文本文件的尾端,则读取数据
        LineText = Split(sFile.ReadLine, "|")   '拆分读取到的数据到数组中
        For iCol = LBound(LineText) To UBound(LineText) '从数组中读取数据并写入对应的单元格
            Sheet2.Cells(i, iCol + 1).Value = LineText(iCol)
        Next iCol
        i = i + 1   '滚动到下一个单元格行
    Loop
    '#这里可以加入设置单元格格式的代码
    sFile.Close
    Set fso = Nothing
    Set sFile = Nothing
End Sub

    在这连续三篇文章中,分别简单介绍了FileSystemObject对象、TextStream对象的一些属性、方法以及如何在EXCEL与文本文件之间的数据导出。在这篇的文本文件读写操作的举例只作一个抛砖引玉的作用,如果网友发现有更加强大的文本文件的导入导出方法,别忘了跟我分享哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值