循环在文本文件中

时间:2015-11-11 03:23:25

标签: excel vba

我想出了一些使用VBA在文本文件中提取某些值的代码。我需要它循环多次,因为表达式'INFORMATION DE BASEETDONNÉESDECALCUL'出现在文本文件中。到目前为止,这是我的代码:

文本文件的例子:

INFORMATION DE BASE ET DONNÉES DE CALCUL  

Nom de l'individu ................. Louis Boutel  
Sexe .............................. Homme  
Numéro d'assurance sociale  ....... 323-423-123  
No employé ........................ 14023  
Date de naissance ................. 1969-03-22  
Date d'emploi ..................... 1998-09-28  

INFORMATION DE BASE ET DONNÉES DE CALCUL  

Nom de l'individu ................. Morin laprise  
Sexe .............................. Homme  
Numéro d'assurance sociale  ....... 123-012-012  
No employé ........................ 14023  
Date de naissance ................. 1959-06-14 
Date d'emploi ..................... 1996-10-22  

我希望能在Excel中使用:

INFORMATION DE BASE ET DONNÉES DE CALCUL  
Date d'emploi 1998-09-28  
INFORMATION DE BASE ET DONNÉES DE CALCUL  
Date d'emploi 1996-10-22  

代码:

Sub test()
Dim myFile As String, text As String, textline As String, DDC As Integer, i As Integer, sArray(4) As String

myFile = "C:\Users\mark\Desktop\C0010DET.txt"
Open myFile For Input As #1
Do Until EOF(1)
    Line Input #1, textline
     text = text & textline
Loop
Close #1


    i = 1

    Dim vItm As Variant
    Dim aStrings(1 To 2) As String

    aStrings(1) = "INFORMATION DE BASE ET DONNÉES DE CALCUL": aStrings(2) = "INFORMATION DE BASE ET DONNÉES DE CALCUL"

    For Each vItm In aStrings
        DDC = InStr(text, "Date d'emploi")
        Cells(i + 1, 1).Value = Mid(text, DDC, 14)
        Cells(i + 1, 2).Value = Mid(text, DDC + 36, 10)
        Next vItm

End Sub

您知道如何使用循环运行此序列,以便我可以检索所需的所有信息吗?

1 个答案:

答案 0 :(得分:0)

未测试:

Sub test()

    Const S_HDR As String = "INFORMATION DE BASE ET DONNÉES DE CALCUL"
    Const S_DT As String = "Date d'emploi"

    Dim myFile As String, textline As String
    Dim c As Range

    myFile = "C:\Users\mark\Desktop\C0010DET.txt"

    Set c = ActiveSheet.Range("A1")

    Open myFile For Input As #1
    Do Until EOF(1)

        Line Input #1, textline
        textline = Trim(textline)

        If textline Like S_DT & "*" Then
            c.Value = S_HDR
            c.Offset(1, 0).Value = S_DT
            c.Offset(1, 1).Value = Right(textline, 10)
            Set c = c.Offset(2, 0)
        End If

    Loop
    Close #1

End Sub