如何用VB读取文件特定字段

qq_39429431 2018-05-18 05:46:51
这是一个文档
[H
<105
EA="4:0"
MDA="SEN"
RK="WRKR"
EE="4:0"
MDE="SEN_AB"

<139 \Komponente\
IN="_numberp.mpr"
VA="_NumVal 79"
VA="_NumXPos 2068.145996"
VA="_NumYPos 166.505615"
VA="_Rest 39301767492630852000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000"
VA="_NumScal 50"


要求读出其中VA="_NumXPos后面的数值,写入到 excle中,该怎么做。
...全文
804 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2018-05-21
  • 打赏
  • 举报
回复
多个文件,就用循环呗! 按相应需求(文件名规律、对文件读取顺序有无特定要求、所有文件是否在同一文件夹中等),   总是可以选择到适当的循环方法来实现。 如果能读1个文件,那么:适当的修改后就能读N个文件!!!!!
qq_39429431 2018-05-21
  • 打赏
  • 举报
回复
如果要多文件一起读取该怎么办,文件名是001,002......019
脆皮大雪糕 2018-05-21
  • 打赏
  • 举报
回复
读文件这件事情上我一般比较粗鲁

    Dim aryInput() As Byte
    Dim strInput As String
    Dim strOutput As String
    Dim i As Long
    Const strFile = "B:\test.txt" ' 文件全路径
    Const strKey = "VA=""_NumXPos" '需要查找的特征字符串
    
    ReDim aryInput(FileLen(strFile))
    Open strFile For Binary As #1
        Get #1, , aryInput
    Close #1
    strInput = StrConv(aryInput, vbUnicode)
    i = InStr(1, strInput, strKey) + Len(strKey)
    strOutput = Mid(strInput, i, InStr(i, strInput, """") - i)
    MsgBox strOutput

qq_39429431 2018-05-21
  • 打赏
  • 举报
回复
谢谢了,不过你那只能读取一条数据
脆皮大雪糕 2018-05-21
  • 打赏
  • 举报
回复
代码因为测试 取 001~002 你可以自己定范围
脆皮大雪糕 2018-05-21
  • 打赏
  • 举报
回复
好人做到底

Option Explicit

Private Sub Command1_Click()
    Dim i As Integer
    Dim strOut As String
    For i = 1 To 2
        strOut = strOut & i & ":" & getData("B:\test" & Format(i, "000") & ".txt") & vbCrLf
    Next
    MsgBox strOut
End Sub


Private Function getData(ByVal strFile As String) As String
    Dim aryInput() As Byte
    Dim strInput As String
    Dim i As Long
    Const strKey = "VA=""_NumXPos" '需要查找的特征字符串
    
    ReDim aryInput(FileLen(strFile))
    Open strFile For Binary As #1
        Get #1, , aryInput
    Close #1
    strInput = StrConv(aryInput, vbUnicode)
    i = InStr(1, strInput, strKey) + Len(strKey)
    getData = Mid(strInput, i, InStr(i, strInput, """") - i)
End Function


舉杯邀明月 2018-05-18
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
   Dim objExcelApp As Object
   Dim objWorkBook As Object
   Dim strTemp As String
   Dim i&, k As Long

   strTemp = "E:\Temp\Data.txt"        ' 此处按你的实际文件路径写
   Set objExcelApp = CreateObject("Excel.Application")
   Set objWorkBook = objExcelApp.Workbooks.Add()
   Open strTemp For Input As #1
   i = 1&
   Do
      If (EOF(1)) Then Exit Do
      Line Input #1, strTemp
      If ("" < strTemp) Then
         If ("VA=""_NumXPos" = Left$(strTemp, 12)) Then
            strTemp = Mid$(strTemp, 13)
            k = InStr(1&, strTemp, """")
            objWorkBook.Sheets(1).Cells(i, 1).Value = Left$(strTemp, k - 1&)
         '  Exit do           ' <--- 如果只有1条数据,就用这句
            i = 1& + i
         End If
      End If
   Loop
   Close
   objExcelApp.Visible = True ' 让Excel窗口显示出来
   Set objWorkBook = Nothing
   Set objExcelApp = Nothing
End Sub

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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