ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何逐行读取文本文件数据?

如何逐行读取文本文件数据?

作者:绿色风 分类: 时间:2022-08-17 浏览:128
楼主
wise
Q:如何逐行读取文本文件数据?
A:请看以下VBA代码:
  1. Public Sub kk()
  2. Dim Text, myline As Integer, myfile As String
  3. myfile = ThisWorkbook.Path & "\SQL.txt"
  4. Open myfile For Input As #1
  5. Do While Not EOF(1) ' 循环至文件尾。
  6. myline = myline + 1
  7. Input #1, Text ' 读入数据并将其赋予变量Text
  8. Range("A" & myline) = Text
  9. Loop
  10. Close #1 ' 关闭文件。
  11. End Sub



逐行读取文本文件数据.rar
2楼
biaotiger1
Q:如何将一个字符串写入文本文件中?
A:ALT+F11→插入模块,输入如下代码
  1. Sub 将文件写入文本文件()
  2. Dim Arr, I
  3. Open "d:\1.txt" For Binary As #1
  4. Put #1, , "biaotiger1"
  5. Close #1
  6. End Sub
运行以上代码后,D盘根目录会新建(如果文件已经存在则覆盖)一个名为“1.txt”的文本文件,打开后会看到字符串已经写入该文件中。
3楼
水星钓鱼
定义的两个变量怎么没用?彪兄喜欢用二进制打开文件?为什么不用Append或Output
4楼
水星钓鱼
这个应该不是逐行读取吧。逐行读取应该是Line Input #1,Text
5楼
zldccmx
呵呵,水星的指点是到位的
6楼
biaotiger1
老大哥来啦,那怎么不写出代码来呀

7楼
kevinchengcw
Q: 拟将生成的0到99999999之间的全部数值写入文本文件,但总是出现数据溢出现象,有什么好办法解决吗?
原代码如下:
  1. Sub 八位数生成()
  2. Dim s(99999999) As String, i As Long
  3. For i = 0 To 99999999
  4. s(i) = Right("00000000" & i, 8)
  5. Next
  6. Open "d:\八位数.txt" For Binary As #1
  7. Put #1, , Join(s, vbCrLf)
  8. Close #1
  9. End Sub
A: 因生成的数据量超级大,会有几百M之多,故以上述方式多数电脑会出现内存不足造成的溢出现象,可以改良如下,即每条写入,而不是全部生成后一起写入,则不会出现该现象了,改良后代码如下:
  1. Sub 八位数生成()
  2. Dim i As Double  '因数据量大,故用double精度的避免出错
  3. Dim txtFile
  4. Set txtFile = CreateObject("Scripting.FileSystemObject").createTextFile(ThisWorkbook.Path & "\八位数.txt", 1)  '利用FSO对象在当前目录下创建文本文件
  5. Application.ScreenUpdating = False   '为提高速度,关闭屏幕刷新
  6. For i = 0 To 99999999
  7. txtFile.writeline Format(i, "00000000")   '将数值格式化后逐条输入到文本文件中
  8. Next
  9. txtFile.Close   '写入完成后关闭文本文件
  10. Set txtFile = Nothing   '清空对象
  11. Application.ScreenUpdating = True  '开启屏幕刷新
  12. MsgBox "写入完成"  '消息提示
  13. End Sub
详见附件(分无进度条和有进度条两版本)
生成八位数序列.rar
生成八位数序列_进度条版.rar

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap