当前位置:编程学习 > VB >>

VBA如何读取TXT数据文件?请大家帮忙看下下面程序。

--------------------编程问答-------------------- strAll = ""
Open filename For Input As #1
Do while not EOF(1)
   Line Input #1,setTemp
   strAll = strAll & vbCrLf & setTemp
Loop
Close #1
--------------------编程问答-------------------- Open filename For Input Shared As #1
' 你的程序这样连续读文本是很不严谨的处理方式
' 如果你的目标文件只有一行或是没有内容,程序就肯定出错
' 所以在读文件之间才需要 not EOF(1) 来判断是否是文件结尾
' 如果不是文件结尾才符合循环条件,才开始读内容
Line Input #1, gTemp01
Line Input #1, gTemp02
Close #1 --------------------编程问答-------------------- strAll = ""
Open filename For Input As #1
Do while not EOF(1)
   Line Input #1,setTemp
   strAll = strAll & vbCrLf & setTemp
Loop
Close #1
小弟刚接触VBA,请问strall(读取所有文件内容)还有setTemp(将数据存放在此);有点不明白我TXT文件有两行gTemp1和gTemp2?上面内容能否具体些?谢谢! --------------------编程问答--------------------
引用 3 楼 qingfengwulang 的回复:
strAll = ""
Open filename For Input As #1
Do while not EOF(1)
   Line Input #1,setTemp
   strAll = strAll & vbCrLf & setTemp
Loop
Close #1
小弟刚接触VBA,请问strall(读取所有文件内容)还有setTemp(将数据存放在此);……


如SupermanKing所说,你的代码没有检测是否到了文件尾。

你实际的数据不是两行吧?? --------------------编程问答-------------------- --------------------编程问答-------------------- C:\Temp.txt文件有多少行? --------------------编程问答-------------------- txt文件为 8行 --------------------编程问答-------------------- txt文件内容是固定的吗?

看你的代码没什么问题,你的代码是怎么调用的?

--------------------编程问答-------------------- 代码时通过软件(组态软件)本身有定时调用,就是每分或每秒调用一次Public Sub ReadTemp()。
但是还是会提示错误:检测是否到文件尾, --------------------编程问答-------------------- 内容不固定,不过也就是温度变化数值。 --------------------编程问答-------------------- 在读取txt数据的时候,他的内容不会变化吧,就是会不会有另外的程序写这个文件?
如果没有另外的程序写文件,问题就出在定时调用上。
就是同一时间可能又两个读操作。

在读文件的时候,你可以加个标志,比如在c盘新建个文件,读结束的时候把文件删掉。

如果读文件时发现有这个文件,就返回。

明白??? --------------------编程问答-------------------- Option Explicit
Const FileName = "C:\Temp.txt"
Dim Temparray(8) As String
Dim adr(8) As Integer

Sub create_file()
    Dim i As Integer
        Open FileName For Output Shared As #1
            For i = 1 To 8
                Print #1, Temparray(i), adr(i)
         Next i
            Close #1
       End Sub


上面就是将外部温度数值从VB写入TXT文件的程序。会不会写入和读出时间上冲突?但是上次出现问题时报警:指针超过文件末尾.....,问题应该还是在读程序上,没有Do while not EOF(1).....loop?如果需要如何加入到读程序上?谢谢! --------------------编程问答-------------------- 用个数组。
Dim gTemp(7) As String
Dim i As Integer
i = 0

Open filename For Input Shared As #1
            
Do While Not EOF(1)
Line Input #1, gTemp(i)
i = i + 1
Loop            
        Close #1
    
        Set_Temp_1 = gTemp(0)
        Act_temp_1 = gTemp(1)
        Set_Temp_2 = gTemp(2)
        Act_temp_2 = gTemp(3)
        Set_Temp_3 = gTemp(4)
        Act_temp_3 = gTemp(5)
        Set_Temp_4 = gTemp(6)
        Act_temp_4 = gTemp(7)
--------------------编程问答-------------------- 谢谢版主,已经解决了。 --------------------编程问答--------------------
引用 14 楼 qingfengwulang 的回复:
谢谢版主,已经解决了。


记着结帖。
补充:VB ,  VBA
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,