分享

利用Open方法将txt数据批量导入Excel中 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/138.html,VBA交流群273624828。

之前学过了怎样将Excel内容导出为单个txt文件,今天我们来看一下怎样将txt格式的数据批量导入到Excel表格中。将txt数据导入Excel中的方法有很多,比如Querytable,ADO,filesystemobjec,Open或者直接录制宏,我们只要掌握其中一种即可。这里我要讲的是Open方法,下节我们再讲录制宏的方法。Excel对想要导入其中的txt数据是有一定要求的,数据必须整齐,要有统一的分隔符,比如逗号或空格等,如果你的数据达不到这些要求的话需要事前对数据进行加工。

假设我们这里有一个3列的txt格式数据,数据之间以逗号为分隔符,下面我们仍然用上节的Open方法来实现将数据导入到Excel表中。看下面的代码

Sub open法导入1()
Dim i%, a, b, c, mypath, myfile, t
Application.ScreenUpdating = False
t = Timer                           '记录开始时间
mypath = ThisWorkbook.Path & "\"    '获得当前路径
myfile = mypath & "工资表.txt"      '要导入的txt的路径
With Sheet1
.UsedRange.ClearContents        '清除sheet1中的内容
Open myfile For Input As #1     '打开txt来对Excel输入
i = 1                           '行的计数器
Do While Not EOF(1)             '判断是否到文件末尾
Input #1, a, b, c            '每列数据给一个对应的标识
Cells(i, 1) = a              '将a赋值给cells(i,1)
Cells(i, 2) = b
Cells(i, 3) = c
i = i + 1                       '行计数器+1
Loop                             '循环到下一行
Close #1
End With
Application.ScreenUpdating = True
MsgBox "耗时" & Timer - t & "s"     '看下用时多久
End Sub

上面的代码中用到了Open myfile For Input As #1,看过将Excel内容导出为单个txt文件这篇文章的朋友应该还记得我们将excel导出为txt时用的是Open myfile For Output As #1,这点应该注意一下。EOF(1)是判断是不是到了txt文件的末尾,如果不到则继续循环,其中的1即是#1中的1。 Input #1, a, b, c是将每列的数据用一个字母来代替,示例中只有3列数据所以用的a,b,c,用的时候有几列就用几个字母。之后将a,b,c的值直接赋给了相应的单元格。如果数据较多的话我们是不提倡将数据直接赋给单元格,因为这样会很慢,而用数组则会快的多。下面的代码就是先将数据都放到一个数组中,最后将整个数据中的数据放入到Excel中。

Sub open法导入()
Dim i%, a, b, c, mypath, myfile, t, arr(1 To 5000, 1 To 3)
Application.ScreenUpdating = False
t = Timer
mypath = ThisWorkbook.Path & "\"
myfile = mypath & "工资表.txt"
With Sheet1
.UsedRange.ClearContents
Open myfile For Input As #1
i = 1
Do While Not EOF(1)
Input #1, a, b, c
arr(i, 1) = a
arr(i, 2) = b
arr(i, 3) = c
i = i + 1
Loop
Close #1
End With
Sheet1.Range("a1").Resize(i, 3) = arr
Application.ScreenUpdating = True
MsgBox "耗时" & Timer - t & "s"
End Sub

这里我事先定义了一个固定大小 的数组,而且将行数填的相当大,防止数据不够用,当然你也可以在循环的过程中利用preserve redim对数组的大小进行修改,感兴趣可以自己百度。可以比较一下两种方法用的时间,用数组方法显然速度提升了好几倍。用上面的方法思路简单,但是如果我列数据很多,那这个代码写起来也相当的麻烦了,那还有更好的方法吗?答案是肯定的,下节我们就来讲怎样通过修改录制宏的方法来将多个txt格式数据批量的导入到excel中。

本节示例文件下载:http://pan.baidu.com/s/1sjrwxU9

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多