打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VBA导入文本文件数据(1)

VBA导入文本文件数据,有多种方法可实现(后续将陆续补充)。最为烦心的是,账号等前导可能有0的文本文件数据,导入工作表中,前导0会丢失。

本示例在导入数据前将整列的单元格格式设置为文本格式,成功避免了此问题。

不过,如果文本文件中,列的顺序一旦发生改变,那么,程序代码也要随之修改。要解决此问题,可将文本文件先写入Access数据库,再用Sql读取Access数据表中的数据,这需要ini配置文件配合,代码相对复杂些,不过也是终极的解决办法,以后会介绍。

文本文件数据:

导入结果:

代码:

Sub iImportTextFile()

'变量声明,&表示长整型

    Dim arr, brr, k&, i&, j&, q&

    '对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,

    '并决定缓冲区所使用的访问方式。

    '打开文件作为数据输入用,文件号为#1

    Open '工资表.txt' For Input As #1


    '对变体型数组arr赋值,逐行读取,arr为一维数组

    'vbCrLf表示回车符与换行符结合


    arr = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)

    '    For i = 0 To UBound(arr)

    '在立即窗口中查看,按Ctrl G可打开

    '        Debug.Print arr(i)

    '    Next


    '关闭打开的文本文件

    Close #1

    '取数组arr最大下标作为文本文件总行数赋给变量k

    k = UBound(arr)


    '针对工作表Sheet1操作,数据将写入该表

    With Worksheets('Sheet1')

        '外层循环,从0到变量k循环,arr为一维数组,下标为0

        For i = 0 To k


            '一行数据在arr中是一个元素,用Split对数组arr用逗号分隔符将它们拆分开来

            '返回一个下标从零开始的一维数组brr

            brr = Split(arr(i), ',')


            '取数组brr最大下标作为总行数赋给变量q

            q = UBound(brr)


            '文本文件第2列账号有前导0,须将工作表第2列置为文本格式

            '否则导入后前导0将丢失

            .Columns(2).NumberFormatLocal = '@'


            '内层循环,从0到变量q循环

            '一行数据读写完后,再回到外层循环,读写下一行

            For j = 0 To q

                '从工作表第1行第1个单元格起,从左到右写入数组brr中对应的元素,i为外层循环变量

                .Cells(i 1, j 1) = brr(j)

            Next


        Next

    End With

    MsgBox '导入完毕!', ok, '提示'

End Sub


看图:


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA中的Ubound函数 | VBA实例教程
VBA实战技巧精粹015:关于Split函数的一些认识
VBA数组声明及赋值后的回填方法
Excel VBA小程序
3段VBA代码,从此不再「复制-粘贴」
看完这篇,如果你还不懂VBA字典,那我就没办法了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服