分享

Excel VBA 7.30 Excel和Txt之间可以对接?Excel有这功能?对的,都是VBA的杰作

 Excel和VBA 2021-03-31

一起学习,一起进步~~


txt文件在我们的日常工作中也是经常接触的一种文件类型,尤其是从一些网站中导出的数据,或者是准备导入网站的数据,有时候也会碰到一些txt类型的文件,txt因为使用方便,没有太多的格式要求,也会被使用在一些数据的登记上面,txt文件就是纯粹的一个记事本,不具备计算等功能,如果切好我们要统计的数据在txt上面,那么我们要如何将txt的数据导入excel呢?

场景简介

将txt数据导入excel,excel本身并不具备这样的功能,当然如果你安装了office自带的一些插件诸如power query ,或者是更改版本的office,诸如2016的话,你可以直接使用power query的功能导入txt文件,但是可能很多的人并没有使用这么高级的版本,或者因为公司的电脑配置问题,没有办法安装插件,这里我们就可以尝试使用VBA自己写脚本实现导入txt的功能

假设当前我们桌面有这样一个txt文件

里面都是一些虚构的数字,文字,也不算小,有112K,我们尝试将这些数据写入excel

代码区

excel和txt之间的交互,听起来很高级,其实写起来就很简单了,简单的几句代码就可以解决了。

Sub test()Filename = "C:\Users\stephen\Desktop\新建文本文档.txt"Open Filename For Input As #1i = 1Do While Not EOF(1) Line Input #1, s Cells(i, 1) = s i = i + 1LoopClose #1End Sub

大致算起来,可能还不超过10句代码

很轻松的就写入了15147行数据

代码分析

来看看代码,看看VBA是如何实现txt和excel之间的交互的

Filename = "C:\Users\****\Desktop\新建文本文档.txt"

这句就很简单了,指定txt的文件的位置,大家可以根据实际的情况转化成为自己的实际路径,也可以通过filedialog调用对话框来选择

Open Filename For Input As #1

标准用语,你想要写入数据,那你肯定要打开文件对不对,所以这句话的作用就是打开txt文件,For Input就是代表写入的意思,#1,代表标签序号,这个文件是1号文件

Do While Not EOF(1)

这很明显是一个循环,那么这个循环是什么意思呢?

关键点在EOF,这三个字母可以这样拆开来理解,end of file ,文件的末尾

哪个文件的末尾呢?后面括号里面有一个1,代表我们上面打开的1号文件

合起来意思就是只要还没有到达txt的末尾

Line Input #1, s

没有到达末尾的话呢?就执行上面这句话,将每一行的内容赋值给s这个变量

然后就可以将s的内容写入单元格中了

Cells(i, 1) = si = i + 1

这样就构成了一个简单的小循环

我们执行下代码,看看实际运行的轨迹

第一行

第二行

依次类推

怎么样,是不是很简答, 有没有感觉到VBA的强大~

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多