Đăng ký học Excel - PivotTable 3 buổi tối (31/7, 2 và 4/8) - TPHCM

Lấy dữ liệu từ txt file

Thảo luận trong 'Lập Trình với Excel' bắt đầu bởi quocthan92, 20 Tháng tư 2017.

  1. quocthan92

    quocthan92 Thành viên mới

    Hello everyone,
    Nhờ mọi người giúp đỡ, em muốn lấy số SerialNumber và ModelCode thì viết code như thế nào ạ?

    Thanks!
     

    Các file đính kèm:

    • Pass.txt
      Kích thước:
      1.2 KB
      Đọc:
      15
  2. giaiphap

    giaiphap .::(^_^)::.

    Lấy thì được nhưng trong file có 3 cái SerialNumber và 2 cái ModelCode thì lấy cái nào đây.
     
  3. quocthan92

    quocthan92 Thành viên mới

    Thanks ban da rep. Mình muốn lấy từ dưới lên lấy cái tìm thấy đầu tiên
     
  4. giaiphap

    giaiphap .::(^_^)::.

    Bạn sử dụng code này thử xem.
    Mã:
    Private Sub GPE()
    Dim myFile As String, textSr As String, textMd As String, textline As String, posLat As Integer, posLong As Integer
    myFile = "C:\Pass.txt"
    textSr = ""
    textMd = ""
    Open myFile For Input As #1
        Do Until EOF(1)
            Line Input #1, textline
            If InStr(textline, "SerialNumber[") <> 0 Then textSr = Right(textline, Len(textline) - InStr(textline, "SerialNumber[") + 1)
            If InStr(textline, "ModelCode:") <> 0 Then textMd = Right(textline, Len(textline) - InStr(textline, "ModelCode:") + 1)
        Loop
    Close #1
    If textSr <> "" Then
        posLat = InStr(textSr, "SerialNumber[")
        Range("A1").Value = Mid(textSr, posLat + 13, InStr(textSr, "]") - (posLat + 13))
    End If
    If textMd <> "" Then
        posLong = InStr(textMd, "ModelCode:")
        Range("A2").Value = Mid(textMd, posLong + 10, InStr(textMd, ",") - (posLong + 10))
    End If
    End Sub
    
     
  5. quocthan92

    quocthan92 Thành viên mới

    Mình hiểu code, giờ mình muốn lấy 4 số serial number khác nhau của file đính kèm thì làm thế nào?
     

    Các file đính kèm:

    • Pass.txt
      Kích thước:
      5 KB
      Đọc:
      5
  6. giaiphap

    giaiphap .::(^_^)::.

    Vậy sửa lại thế này.
    Mã:
    Sub GPE()
    Dim myFile As String, textSr As String, textMd As String, textline As String, posLat As Integer, posLong As Integer
    Dim k As Long, i As Long
    myFile = "C:\Pass.txt"
    textSr = "": textMd = ""
    i = 0: kl = 0
    Open myFile For Input As #1
        Do Until EOF(1)
            Line Input #1, textline
            If InStr(textline, "SerialNumber[") <> 0 Then
                textSr = Right(textline, Len(textline) - InStr(textline, "SerialNumber[") + 1)
                posLat = InStr(textSr, "SerialNumber[")
                k = k + 1
                Range("A" & k).Value = Mid(textSr, posLat + 13, InStr(textSr, "]") - (posLat + 13))
            End If
            If InStr(textline, "ModelCode:") <> 0 Then
                textMd = Right(textline, Len(textline) - InStr(textline, "ModelCode:") + 1)
                posLong = InStr(textMd, "ModelCode:")
                i = i + 1
                Range("B" & i).Value = Mid(textMd, posLong + 10, InStr(textMd, ",") - (posLong + 10))
            End If
        Loop
    Close #1
    End Sub
    
     
  7. quocthan92

    quocthan92 Thành viên mới

    Hi giaiphap, thanks ban rat nhiu vi da tan tinh giup do.
    Mình mới viết thêm nhằm để lấy PBACode dòng cuối cùng của từng Serial Number. Kết quả chạy đúng. Nhờ bạn xem giúp vậy có bị lỗi trùng biến không mình có đính kèm file txt mới.

    Sub GPE()
    'khai bao ham

    Dim myFile As String, textSr As String, textMd As String, textline As String, posLat As Integer, posLong As Integer
    Dim k As Long, i As Long
    myFile = "C:\Pass.txt"
    textSr = ""
    textMd = ""
    textPBA = ""

    k = 1
    i = 1
    h = 1
    Open myFile For Input As #1
    Do Until EOF(1)
    Line Input #1, textline

    'xu ly ham

    If InStr(textline, "SerialNumber[") <> 0 Then

    textSr = Right(textline, Len(textline) - InStr(textline, "SerialNumber[") + 1)
    posLat = InStr(textSr, "SerialNumber[")
    k = k + 1
    Range("A" & k).Value = Mid(textSr, posLat + 13, InStr(textSr, "]") - (posLat + 13))

    End If
    If InStr(textline, "ModelCode:") <> 0 Then
    textMd = Right(textline, Len(textline) - InStr(textline, "ModelCode:") + 1)
    posLong = InStr(textMd, "ModelCode:")
    i = i + 1
    Range("B" & i).Value = Mid(textMd, posLong + 10, InStr(textMd, ",") - (posLong + 10))
    End If

    If InStr(textline, "PBACode") <> 0 Then

    textPBA = Right(textline, 11)
    'h = h + 1
    Range("C" & k + 1).Value = textPBA
    End If

    Loop
    Close #1
    End Sub
     

    Các file đính kèm:

    • Pass.txt
      Kích thước:
      7.3 KB
      Đọc:
      4
    Lần chỉnh sửa cuối: 25 Tháng tư 2017
  8. giaiphap

    giaiphap .::(^_^)::.

    Bạn sử dụng biến h cho cột C đi. Nếu dùng biến k thì bị trùng với cột B
     

Chia sẻ trang này