TimSpangler 发表于 2006-7-19 11:15:48

从文本文件读取?

Ok i'我回来了(仍在努力适应它)
我有一个关于阅读文本文件的问题
我有一个文本文件,上面有这样的行:
a-ANNO-DIMS;尺寸界线/尺寸界线、标注终止符、标注文字;不断的35;7.1.LayerCreator
(全部一行不换行)我也有这个代码[代码问题是,当我运行它时,它会在逗号#039;s#160;我怎样才能把它送到a。将该行读作一行。读这行并在分号处分开
这将是最好的选择,然后我可以为每个变量设置变量(列表是数组吗?)
无论如何,这是#160;从我编写的layercreator程序中,我可以尝试将其移植到vba
TIA

Bryco 发表于 2006-7-19 11:44:08

时间不多,所以我希望我能做到这一点……我用了这样的东西Public Sub ReadMyFile()
    Dim inputfile As String
      inputfile = "C:\myfile.txt"
    Dim DataFile As Integer
      DataFile = FreeFile
    Dim Dataline As String
   
    Open inputfile For Input As #DataFile
      While Not EOF(DataFile)
            Line Input #DataFile, Dataline
                ' now you've got the line so do your stuff here
      Wend
    Close #DataFile
end sub 您可能想看看替换方法,用分号替换行中的逗号,反之亦然。然后可以使用split函数从行返回数组,这将用逗号替换分号replace(dataline,";",",",,,vbBinaryCompare) 然后使用该分隔符将线拆分为数组dim LineArray as variant
LineArray =Split(dataline,",",,vbBinaryCompare)

Bryco 发表于 2006-7-20 01:15:13


这里有一种方法,将每一行传递给一个函数Sub TestParse()
    Dim sLine As String
    Dim Thang
    sLine = "A-ANNO-DIMS;Witness/extension lines, dimension terminators, dimension text;Continuous;35;7;1;LayerCreator;"
    Thang = ParseLayerInfo(sLine)
   
    For i = 0 To UBound(Thang)
      Debug.Print Thang(i)
    Next
End Sub
Public Function ParseLayerInfo(sLine As String) As Variant

    Dim Pos1 As Long, Pos2 As Long
    Dim i As Integer
    Dim vInfo(6) As String
   
    Pos1 = InStr(1, sLine, ";")
    vInfo(0) = Left(sLine, Pos1 - 1)
    For i = 1 To 6
      Pos2 = InStr(Pos1 + 1, sLine, ";")
      vInfo(i) = Mid(sLine, Pos1 + 1, (Pos2 - Pos1) - 1)
      Pos1 = Pos2
    Next i
    ParseLayerInfo = vInfo
   
End Function
页: [1]
查看完整版本: 从文本文件读取?