VBA讀取逐行讀取CSV數據(可指定條件)

方法一:
Sub 提取部分CSV數據()

Dim FileName As String
Dim txtLine As String
FileName = ThisWorkbook.Path & "\EUtranCellRelation.csv"
Open FileName For Input As #1
Open ThisWorkbook.Path & "\output.CSV" For Output As #2
k = 0
Do While Not EOF(1)
    
    Line Input #1, txtLine '讀取一行的數據,一直讀到文件尾
    k = k + 1
    If k = 1 Then
      For I = 0 To UBound(Split(txtLine, ","))
          Str1 = Split(txtLine, ",")(I)
          If Str1 = "ip" Then
            n = I
          ElseIf Str1 = "EUtranCell" Then
            m = I
          
          ElseIf Str1 = "ishoallowed" Then
            o = I
          End If
    
       Next
    Else
     'For I = 0 To UBound(Split(txtLine, ","))
     Print #2, Split(txtLine, ",")(n) + Chr(44) + Split(txtLine, ",")(m) + Chr(44) + Split(txtLine, ",")(o)
    End If
    
Loop
Close #1
Close #2
End Sub




方法二:
Sub 提取鄰區及鄰區對()
Set fs = CreateObject("Scripting.FileSystemObject")
FileName = ThisWorkbook.Path & "\EUtranCellRelation.csv"
'Open FileName For Input As #1
Open ThisWorkbook.Path & "\output.CSV" For Output As #2
Set objFile = fs.GetFile(FileName)
Set streamExcel = objFile.OpenAsTextStream()

 Do While Not streamExcel.AtEndOfStream
      txtLine = streamExcel.ReadLine()
       num = num + 1
       If num = 1 Then
       
         ' For i = 0 To UBound(Split(txtLine, ","))
          '  Str1 = Split(txtLine, ",")(i)
           '   If Str1 = "logFile" Then
            '    n = i
             ' ElseIf Str1 = "MO" Then
              '  m = i
          
             'ElseIf Str1 = "eutrancellrelationid" Then
             '  O = i
              'End If
    
            'Next
             Print #2, "logFile" + Chr(44) + "CELL" + Chr(44) + "eutrancellrelationid"
          Else
      
            t = Split(txtLine, Chr(34))
            CELL = Split(Split(Replace(Replace(t(1), "EUtranCellTDD=", "!"), "EUtranCellFDD=", "!"), "!")(1), ",")(0)
            
            ETC = Split(t(2), ",")(12)
            Print #2, Split(t(0), ",")(0) + Chr(44) + CELL + Chr(44) + ETC
          End If
      
    Loop


Close #1
Close #2
MsgBox ("OK")

End Sub
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章