日前,有网友提出了这样一个需求。文件夹里有N个txt文档,每个文档的内容都是一列数据。现在,需要将所有txt文档导入Excel,并按列排出。如果是手动完成的话,会相当耗时。今天我就来讲讲如何用VBA快速批量导入txt文档到Excel。
首先创建一个Excel宏文件,按Alt F11调用VBA代码界面,插入一个模块,创建一个新的过程Sub。
编写以下代码
00 sub inTxt()01 Dim txt name $ 02 Dim my path $ 03 Dim my text $ 04 Dim c %,r05应用程序。screen updating=false 06 my path=this workbook。Path '\ '07 txtName=Dir(myPath '*。txt’)08列。NumberFormatLocal=' @ ' 09行。clear contents 10 C=111 While txt name ' ' 12 Open my path txt name For Input As # 113 r=214 Cells(1,C)=txt name 15do While not eof(1)16 Input # 1,mytext17cells (r,C)=my text 18 r=r 119 loop 20 close # 121 C=C 122 txname=dir 23 wend 24 application。screen updating=true 25 msgbox(' Done!')26结束子代码解析:
01-03行:定义txt的文件名,当前宏的路径,txt行的数据缓存。
第04行:定义列号和行号。
第05行:关闭屏幕刷新。
第06行:分配当前宏的路径。
第07行:在当前宏所在的文件夹中查找txt文件,如果没有找到则返回' '。
第08行:将单元格格式设置为文本格式,以防止txt中的数据格式被Excel自动修改。
第09行:清除所有数据。
第10行:列号的初始值为1(从A列开始)
第1行:使用While…Wend语句重复执行第12行到第22行的代码,直到遍历完所有的txt文件。
第12行:使用Open语句打开txt文件,完成txt文件的输入,#1为文件号。
13行:行号的初始值是2(第一行存储txt文件名)
第14行:第一行写txt文件名。
第15行:使用Do…Loop语句重复执行第16行到第18行,直到文本文件结束。
EOF函数返回一个整数,该整数返回布尔值True,表明已经到达为随机或顺序输入打开的文件的结尾。EOF后面的参数是文件号。
16行:读入一行数据,赋给变量myText。
第17行:在单元格中填充我的文本。
18行:第1行,我的文本数据将被填充。
第20行:关闭open语句打开的txt文件。
第21行:第1列,读取下一个文件。
第2行:获取下一个txt文件,如果没有找到,返回' '。
24行:打开屏幕刷新。
25行:提示程序结束,可以根据自己的需要决定是否添加。
最后,我们可以在Excel工作表中添加一个按钮,将宏指定为我们创建的Sub。
让我们来看看节目的效果。
48 Excel VBA实用技巧,实例详细分析,初学者必看,推荐收藏。
程序效果
点击下面的链接查看我的其他文章!
Excel删除重复项
Excel年会抽奖小程序
Excel自动创建工作表目录
Excel的隐藏合并单元格线
将Excel的图片URL批量转换成图片(1)
将Excel的图片URL批量转换成图片(2)
Excel VBA批量为Word文档添加页眉和页脚
48 Excel VBA实用技巧,实例详细分析,初学者必看,推荐收藏。
喜欢的朋友记得喜欢,关注。网友在Excel中遇到问题可以找我,或者在评论区或私信告诉我你想看的VBA office教程。下期分享给大家,以后不定期更新Excel VBA技巧!