VBA每⽇⼀练(2),将txt的部分全部内容导⼊到EXCEL
思路
1 最直接的办法,应该是把 TXT ⽂件拖⼊到EXCEL,或⽤EXCEL打开?
2红烧白鲳鱼 先把1个TXT读⼊进来
3把多个TXT读⼊到EXCEL的多个 SHEET
第1版
找⽹上的代码学习⾃⼰魔改了⼀下,还有不少问题
错误1:⼜忘了变量赋值和对象赋值,t不应该乱⽤的
问题1:这个版本,没解决中⽂读取的问题,乱码
问题2:现在都是读取到⼀个单元格,如何分⾏读取呢?
Sub readfromtxt1()
Dim fso As Object
Dim f1
Dim filepath1
'我命名经常习惯+1,避免⽤到系统关键字保留字等
filepath1 = "C:"
'错误t filepath1 = "C:"
'因为t只能⽤来设置对象,这种变量不需要⽤t,应该⽤let 或默认不写
Set fso = CreateObject("stemobject")
Set f1 = xtfile(filepath1)
readtext = l
Sheets("sheet1").Cells(1, 1) = readtext
"读取完成"
'这个版本读内容,数字字母可以,但是中⽂会解码错误,可能需要设置unicode格式等
End Sub
解决乱码问题
最后还是从 stackoverflow和 官⽅doc上查到的
OpenTextFile(、[ 、[ 、[ ]]])
filenameiomodecreateformat
根据查到的⽅法 format格式,是⼀个tristate
国内⽹站上找的解释: 0或默认为ASC2格式,-1为unicode,2为系统默认模式 (这是错误的)
官⽅doc解释: unicode Optional. Boolean value that indicates whether the file is created as a Unicode or ASCII file. The
value is True if the file is created as a Unicode file; Fal if it's created as an ASCII file. If omitted, an ASCII file is assumed.
也就是 unicode这个属性值。填写fal 或0,或不填也认为是fal ,就是⽤ASC2,,⽽填其他任85年属什么 意数,只要⾮0,⾮fal都是Unicode
的意思。也就是 1 ,-1 ,2 ,5,-666,999都是unic什么尽染成语 ode
1 Set f1 = xtfile(filepath1, , , tristate = 1) 语法正常
2 另外TXT⽂档的,点另存为,必须修改为 unicode才⾏,不能是utf-8,好像是因为fso不能处理utf-8
Sub readfromtxt1()
Dim fso As Object
Dim f1
Dim filepath1
'我命名经常习惯+1,避免⽤到系统关键字保留字等
filepath1 = "C:"
'错误t filepath1 = "C:"
'因为t只能⽤来设置对象,这种变量不需要⽤t,应该⽤let 或默认不写
Set fso = CreateObject("stemobject")
Set f1 = xtfile(filepath1, , , tristate = 1)
readtext = l
Sheets("sheet1").Cells(1, 1) = readtext
"读取完成"
'这个版本读内容,数字字母可以,但是中⽂会解码错误,可能需要设置unicode格式等
End Sub
第2版: 实现读多⾏,和循环读取N⾏
现在尝试下
1 如何逐⾏读,⽽不是全部读取
2 如何把内容分别写到不同的单元格
3 如何把内容写到多个sheet⾥
逐次读取多⾏
下⾯这个只能实现读1⾏1⾏的逐次读取多⾏,每次读取⼀⾏后,会⾃动挪到下⼀⾏
Sub readfromtxt1()
Dim fso As Object
Dim f1
Dim filepath1
'我命名经常习惯+1,避免⽤到系统关键字保留字等
Dim i
fil培训汇报 epath1 = "C:"
'错误t filepath1 = "C:"
'因为t只能⽤来设置对象,这种变量不需要⽤t,应该⽤let 或默认不写
Set fso = CreateObject("stemobject")
Set f1 = xtfile(filepath1, , , tristate = 1)
Sheets("sheet1").Cells(1, 1) = ne
Sheets("sheet1").Cells(2, 1) = ne
S小比熊犬多少钱一只 heets("sheet1").Cells(3, 1) = ne
"读取完成"
End Sub
这样可以循环读取N⾏,但是最⼤⾏数还是未知
Sub readfromtxt1()
Dim fso As Object
Dim f1
Dim filepath1
'我命名经常习惯+1,避免⽤到系统关键字保留字等
Dim i
filepath1 = "C:"
'错误t fil迪士尼童话 epath1 = "C:"
'因为t只能⽤来设置对象,这种变量不需要⽤t,应该⽤let 或默认不写
Set fso = CreateObject("stemobject")
Set f1 = xtfile(filepath1, , , tristate = 1)
For i = 1 To 10
readtext = ne
Sheets("sheet1").Cells(i, 1) = readtext
Next i
"读取完成"
End Sub
⾸页博客学院下载论坛问答商城活动专题招聘ITeyeGitChatAPPVIP会员续费8折
Python进阶之路
写博客
Markdown编辑器
富⽂本编辑器
我的主页
⽂章管理
评论管理
分类专栏
订阅专栏
博客搬家
博⽂数据统计Beta版
百度热搜词条
⾃定义百度统计
等级权益
订单收益
博客打赏
博客设置
博客模块管理
⾃定义域名
CSDN博客交流群
打开⼿机QQ扫码
或点击这⾥加⼊群聊
QQ客服
VBA每⽇⼀练,VBA ⽂件操作相关知识, 涉及 #1, eof(), lof()
45/100
⽂章标签:
添加标签
最多添加5个标签
分类专栏:
VBA
添加新分类
最多添加3个标签,#为⼆级分类
资源信息:
请填写资源链接
上传资源
⽂章类型:
*
申请原创将启⽤(Creative Commons )版权模板,如果不是原创⽂章,请选择转载或翻译 原创⽂章默认开启打赏, 打赏管理
发布形式:
Sub richardliu1()
Dim fso
Dim f1
Dim str1
Dim i
Dim i
i = 1
str1 = 1
Set fso = CreateObject("stemobject")
Set f1 = xtfile("C:")
Do While Not Len(str1) '判断是否取到空⾏
str1 = ne
Worksheets("a").Cells(i, 3) = str1
i = i + 1
str1
Loop
End Sub
第3版:后续思考, 实现智能读取txt的最⼤⾏?---- 没识别最⼤⾏,但能到⽂件尾
⾃动读取⽂档的最⼤⾏,
可以识别到⽂档最尾
Sub jackma3()
Dim str1
i = 1
Open "C:" For Input As #1
Do While Not EOF(1)
Line Input #1, str1
Worksheets("a").Cells(i, 1) = str1
i = i + 1
str1
Loop
Clo #1
End Sub
额外版 封装为函数,可以在其他 过程,函数⾥英语单词教学方法 调⽤
可以把这个封装为⼀个函数,作为⾃定义函数,在EXCEL直接调⽤
单元格⾥输⼊公式
=readtext("C:")
Function readtext(filepath As String) As String
Dim fso As Object
Dim f
Set fso = CreateObject("stemObject")
Set f = xtFile(filepath)
readtext = l
End Function
或者在其他sub内调⽤
Sub testsub101()
Str1 = readtext("C:")
Cells(1, 3) = Str1
End Sub
本文发布于:2023-04-22 08:11:01,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/89/842398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |