实用VBA:12.用VBA将txt文本文件导入Excel表格

15 篇文章 3 订阅
13 篇文章 1 订阅

1.需求场景

小伙伴们工作中时常遇到处理文本文件的情况。有些业务系统中的数据记录、日志文件、格式化输出的数据等是以txt文本文件的方式记录的。但是在进行数据处理和分析时,如果需要处理大量的文本文件、或对文本文件中特定的字段、数据等进行处理,会显得繁琐而棘手。如果能够导入到excel文件中,就可以发挥Excel进行数据统计分析功能的优势。

2.解决思路

一般此类文本文件的格式比较规范,数据按行存储,字段排列顺序一致、格式相同。可以使用VBA文件对象访问文本文件,打开文件之后,逐行读入文本,每行当做一个字符串;获取字符串之后再根据行数据各字段之间以tab分隔的特点,以tab为标记将字符串拆分为多个子串;每个子串保存在一个变量中,此处以字符串数组方式处理。到表格中,再把字符串变量逐一写入单元格中。循环处理各行数据,即实现了将txt文件导入excel的效果。灵活处理变量,简单添加逻辑代码,还可以实现对原始数据的剔除、选择、变更字段顺序等简单的处理,在文件内容导入的过程中,实现批量预处理,使导入后的数据更符合自己对数据处理的需求。

3.VBA实现    

Dim wb As Workbook

    Dim ws As Worksheet

    Dim openFile

'文本文件内容读入表格

Public Sub 文本文件内容读入表格()

    '定义变量

    Dim txt As String

    Dim str_txt() As String

    Dim sub_str() As String

    Dim i, j, k, Line, endLine As Integer

    '设置起始和结尾行号,即读取范围

    Line = 1

    endLine = 4

    '设置读取文件

    openFile = "D:\Temp\12-1(ANSI).txt"

    '打开文件

    Open openFile For Input As #1

    '设置工作簿和工作表变量

    Set wb = Workbooks(1)

    Set ws = Worksheets("导入文件")

    '激活工作表

    ws.Activate

    '清空工作表原有内容

    ws.UsedRange.Value = ""

    '循环按行读取原始txt文件数据

    Do While Line <= endLine

        Line Input #1, txt

         '按tab键分隔数据

        str_txt = Split(txt, vbTab)

        '分隔过的数据填入表格一行各列中

        For i = 0 To UBound(str_txt)

            ws.Cells(Line, i + 1).Value = str_txt(i)

        Next i

        Line = Line + 1

     Loop

    '关闭文件

    Close #1

    '释放工作簿和工作表变量

    Set ws = Nothing

    Set wb = Nothing

    '显示提示信息

    MsgBox "文本文件导入完成。"

End Sub

4.运行效果

需要注意的是:因为文本文件中含有中文字符,所以文件编码格式应为ANSI格式,如果UTF-8编码格式,导入后会出现乱码的格式,需要对文件编码进行处理。逻辑稍显复杂,本着一次学一个小技巧,学会不学废的原则,本次范例假定在ANSI格式文本文件的前提下。 UTF-8编码等问题留待后续探讨。

再和前面向大家介绍过的批量提取文件目录等内容综合运用,即可实现对文本文件的批量处理。

如果感觉本篇有帮助的话,欢迎点赞、回复或关注。

【点赞富三代,分享美一生】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值