2015-11-11 4 views
-1

Я придумал немного кода, который извлекает определенные значения в текстовом файле, используя VBA. Мне нужно, чтобы он зацикливался столько раз, сколько выражение «ИНФОРМАЦИЯ DE BASE ET DONNÉES DE CALCUL» появляется в текстовом файле. Вот мой код до сих пор:Looping в текстовом файле

Exemple текстового файла:

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 

I Ожидаемые иметь в 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 

Вы знаете, как я может запустить эту последовательность, используя цикл, чтобы я мог получить всю необходимую информацию?

+0

Что работает? Какая информация? Все, что мы можем видеть, - это чтение текстового файла без ввода новых строк. С помощью этой 1 одиночной линии вы дважды зацикливаете (из-за aStrings) и извлекаете некоторую строку в ячейки, которая не меняет строку на следующем элементе. Затем некоторые математические выражения (v и j), чтобы извлечь текст в строки, которые позже были перезаписаны ... полностью смутили меня, что вы пытаетесь сделать. – PatricK

+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 
Смежные вопросы