如何利用VBA实现Excel 报表从文本文件读取指定的信息?

blackboyi 2007-04-17 09:25:17
程序修改之后通过,但是读不出数据,程序如下:

Sub sw()
Dim FILE_PATH As String, TEMP As String, I As Long, N As Long, ZHANMA As String, SHIJIAN As String, S() As String, Z As String, a As String

FILE_PATH = "D:\RWIS\tele\NP" & Format(Date, "YYMMDD") & ".tel"
Open FILE_PATH For Input As #1 '打开文件
S() = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
Close #1 '一定要在报文处理完成后关闭文件,切记
For I = 0 To UBound(S) '按行输入,每行作为一个字符串赋值给变量a

ZHANMA = Mid(S(I), 18, 8) '站号变量

SHIJIAN = Mid(S(I), 27, 8) '时间变量

Z = Mid(S(I), 18, 8)
If Mid(SHIJIAN, 5, 2) = "08" Then '只读取8时的数据信息,其他时间不读取
'以下是根据判别站号,指定活动单元格,并将函数的值写入
If ZHANMA = "61913200" Then [B6] = cjsw(a) '**站的站码,用户可以根据各自的需要设定不同的站码
If ZHANMA = "61901300" Then [B7] = cjsw(a)
If ZHANMA = "61512000" Then [B8] = cjsw(a)
'在活动单元格中写入函数cjsw(a)的值,cjsw(a)为求取字符串变量a中的水位值的自定义函数,这里的a 是一行从报文文件中读取的一份完整的报文字符串。
End If
Exit For
Next
[B6].Activate
MsgBox ("水位自动翻译完成!!!!")
End Sub

Function cjsw(Z As String) '求河道站水位的函数

For I = 36 To Len(Z)

If Mid(Z, I, 2) = "Z " Then

cjsw = Mid(Z, I + 2, 5)

End If

Next I

End Function

我要的文本文件内容如下:

SY5773 H 61913200 04120800 Z 40.54 ZS 5 Q 20.5 QS 1 QX 25.0 QM 48.6 NN GOITM2007/04/12_08:12:26 04 GOOTM2007/04/12_08:14:16

就是只要Z后面的40.54到B6,该怎么改呢?急
...全文
629 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
njp20033266njp 2007-04-25
  • 打赏
  • 举报
回复
Dim TextLine1 As String
Dim AllText1() As String
Dim i1 As Integer
i1 = 0
TextLine1 = ""
Open 文件 For Input As #11
Do While Not EOF(11)
Line Input #11, TextLine1
ReDim Preserve AllText1(i1)
AllText1(i1) = TextLine1
i1 = i1 + 1
Loop
Close #11
  • 打赏
  • 举报
回复
把空行的地方,用$代替,split用$作分隔符就行了
  • 打赏
  • 举报
回复
出错首先是因为 vbCrLf 不能拿来当作分隔符。其余的自己调吧。
  • 打赏
  • 举报
回复
读取的文本内容的那个地方乱糟糟的写的什么,直接按文本读不行吗?
blackboyi 2007-04-22
  • 打赏
  • 举报
回复
??????

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧