Excel VBA 7.34 将TXT按照指定分隔符写入Excel,VBA一次解决数据导入+数据分列

一起学习,一起进步~~

昨天我们分享了用vba来实现按照指行数写入同一行数据的方法,在某种程度适应了一些小伙伴的工作需要,不过还是那句话,做数据汇总的,总要面对各种千奇百怪的数据源,今天有小伙伴们给我发来一个问题,是这样的

希望能够是现在写入的过程中,按照指定的分隔符,也就是逗号来进行分割,一行数据就写在同一行

场景简介

其实如果是单个文件,数据量不是很大的话,上面的情况可以通过导入/写入数据之后,在进行分列这样子实现效果的,如果按照我们之前的代码进行写入的话,也是需要再次操作数据的分列的,那么是否能够通过VBA代码一次到位呢?

代码区

Sub test()Dim pathnpathn = ActiveWorkbook.PathWith Application.FileDialog(msoFileDialogFilePicker) If .Show = -1 Then f = .SelectedItems(1) End IfEnd Withi = Cells(Rows.Count, 1).End(xlUp).RowWorkbooks.OpenText _ Filename:=f, _ StartRow:=1, _ DataType:=xlDelimited, _ Other:=True, _ OtherChar:=",", _ FieldInfo:=Array(Array(1, 5))ActiveWorkbook.SaveAs Filename:="txt", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=FalseEnd Sub

细心的小伙伴们会发现,本节的代码和之前的代码有有很大的差异了。因为我们要按照关键的拆分符进行拆分,之前的方法已经没有办法满足我们的需求了,所以这里我们要更新下方法

我们来看看代码的运行过程,首先选择我们要复制拆分并且导入的文档

然后我们就额可以坐等程序执行了

成功的按照逗号为分隔符,将所有的数据在导入的同时,进行了拆分,等于将我们手工执行的数据导入+数据分列,合并在一起执行了,既省时又方便。

代码分析

既然功能如此强大,那么我们来看看今天的代码

其实今天的代码关键部分在这里

Workbooks.OpenText _ Filename:=f, _ StartRow:=1, _ DataType:=xlDelimited, _ Other:=True, _ OtherChar:=",", _ FieldInfo:=Array(Array(1, 5))

我们来具体说下每句话的作用

  1. 'Filename代表指定需要输入的txt的名字

  2. 'StartRow指文件开始输入的列数

  3. 'DataType指定按照分隔符号对文本进行分列

  4. 'other设置为true,代表的是文本进行分开的时候,是参照下面的otherchar指定的分隔符进行分列的

  5. 'FieldInfo就比较的负责了

关键代码已经备注了,相对于之前的一行一行的读取,这一次是整个过程一次性读取写入,明显提速了很多

我们看到这一块代码是一个整体,在执行完这一步之后,数据就已经全部按照要求写入完成

非常的快。测试文件总共有2804行,一秒都不用就已经完成了读取和写入了。

================================================

(0)

相关推荐