您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Excel VBA 7.34 将TXT按指定分隔符写入Excel,一次完成导入+分列

2019/7/8 9:18:32发布143次查看
前景提要(文末提供源码下载)
昨天我们分享了用vba来实现按照指行数写入同一行数据的方法,在某种程度适应了一些小伙伴的工作需要,不过还是那句话,做数据汇总的,总要面对各种千奇百怪的数据源,今天有小伙伴们给我发来一个问题,是这样的
希望能够是现在写入的过程中,按照指定的分隔符,也就是逗号“,”来进行分割,一行数据就写在同一行
场景简介
其实如果是单个文件,数据量不是很大的话,上面的情况可以通过导入/写入数据之后,在进行分列这样子实现效果的,如果按照我们之前的代码进行写入的话,也是需要再次操作数据的分列的,那么是否能够通过vba代码一次到位呢?
代码区
sub test()
dim pathn
pathn = activeworkbook.path
with application.filedialog(msofiledialogfilepicker)
if .show = -1 then
f = .selecteditems(1)
end if
end with
i = cells(rows.count, 1).end(xlup).row
workbooks.opentext _
filename:=f, _
startrow:=1, _
datatype:=xldelimited, _
other:=true, _
otherchar:=,, _
fieldinfo:=array(array(1, 5))
activeworkbook.saveas filename:=txt, fileformat:=xlopenxmlworkbook, createbackup:=false
end sub
细心的小伙伴们会发现,本节的代码和之前的代码有有很大的差异了。因为我们要按照关键的拆分符进行拆分,之前的方法已经没有办法满足我们的需求了,所以这里我们要更新下方法
我们来看看代码的运行过程,首先选择我们要复制拆分并且导入的文档
然后我们就额可以坐等程序执行了
成功的按照逗号为分隔符,将所有的数据在导入的同时,进行了拆分,等于将我们手工执行的数据导入+数据分列,合并在一起执行了,既省时又方便。
代码分析
既然功能如此强大,那么我们来看看今天的代码
其实今天的代码关键部分在这里
workbooks.opentext _
filename:=f, _
startrow:=1, _
datatype:=xldelimited, _
other:=true, _
otherchar:=,, _
fieldinfo:=array(array(1, 5))
我们来具体说下每句话的作用
filename代表指定需要输入的txt的名字startrow指文件开始输入的列数datatype指定按照分隔符号对文本进行分列other设置为true,代表的是文本进行分开的时候,是参照下面的otherchar指定的分隔符进行分列的fieldinfo就比较的负责了关键代码已经备注了,相对于之前的一行一行的读取,这一次是整个过程一次性读取写入,明显提速了很多
我们看到这一块代码是一个整体,在执行完这一步之后,数据就已经全部按照要求写入完成
非常的快。测试文件总共有2804行,一秒都不用就已经完成了读取和写入了。
=======================================================
本节课的案例源码已经上传,需要的小伙伴们后台私信“7-34-0”即可,希望大家多多支持~~
好了~明晚19:00,准时再见。

该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product