Microsoft Excel

Herbers Excel/VBA-Archiv

Textdatei variabel auslesen



Excel-Version: 10.0 (Office XP)

Betrifft: Textdatei variabel auslesen
von: Hartmut
Geschrieben am: 09.06.2002 - 17:46:49

Hallo Zusammen,

bin inzwischen an einem Punkt, wo ich Eure Unterstützung brauche. Nachdem ich mit externer Unterstützung bereits folgendes Makro zum Laufen gebracht habe komme ich nun nicht mehr weiter. Das Makro liest aus einer Textdatei, die sich aus mehreren Emails (per Outlook über "speichern unter" erzeugt) zusammensetzt verschiedene Zeileninhalte satzweise in die Spalten einer Exceldatei aus. Leider ist es so, dass in den einzelnen Emails nicht immer alle Infos an der gleichen Stelle stehen bzw. teilweise weitere relevante Zeilen (wie z.B. Telefonnummer) hinzugefügt sind, so dass ich durch den Zähler (i), der stur Zeile für Zeile durchliest Probleme bekomme. Wie kann ich das Makro so flexibel gestalten, dass ich die Datensätze dennoch in die Spalten in mein Excelsheet bekomme.

Danke und Gruss
Hartmut


Makro:

Sub Auslesen()
Workbooks("Input.txt").Activate
lngmax = Cells(Rows.Count, 1).End(xlUp).Row
k = 1
For i = 1 To lngmax
If Left$(Cells(i, 1), 12) = "Artikelbesch" Then
ArtBeschr = Cells(i + 1, 1)
ArtNr = Right$(Cells(i + 2, 1), Len(Cells(i + 2, 1)) - 15)
VerkPreis = Right$(Cells(i + 3, 1), Len(Cells(i + 3, 1)) - 15)
EndeDatum = Right$(Cells(i + 4, 1), Len(Cells(i + 4, 1)) - 19)
ZahlGebote = Right$(Cells(i + 5, 1), Len(Cells(i + 5, 1)) - 23)
MitgliedsnameVerk = Right$(Cells(i + 6, 1), Len(Cells(i + 6, 1)) - 31)
EmailVerk = Right$(Cells(i + 7, 1), Len(Cells(i + 7, 1)) - 32)
NameVerk = Right$(Cells(i + 8, 1), Len(Cells(i + 8, 1)) - 6)
StrasseVerk = Right$(Cells(i + 9, 1), Len(Cells(i + 9, 1)) - 8)
OrtVerk = Right$(Cells(i + 10, 1), Len(Cells(i + 10, 1)) - 5)
MitgliedsnameHoechst = Right$(Cells(i + 11, 1), Len(Cells(i + 11, 1)) - 34)
EmailHoechst = Right$(Cells(i + 12, 1), Len(Cells(i + 12, 1)) - 35)
NameHoechst = Right$(Cells(i + 13, 1), Len(Cells(i + 13, 1)) - 6)
StrasseHoechst = Right$(Cells(i + 14, 1), Len(Cells(i + 14, 1)) - 8)
OrtHoechst = Right$(Cells(i + 15, 1), Len(Cells(i + 15, 1)) - 5)
Workbooks("Auswertung.xls").Activate
Cells(k, 1) = Trim(ArtBeschr)
Cells(k, 2) = Trim(ArtNr)
Cells(k, 3) = Trim(VerkPreis)
Cells(k, 4) = Trim(EndeDatum)
Cells(k, 5) = Trim(ZahlGebote)
Cells(k, 6) = Trim(MitgliedsnameVerk)
Cells(k, 7) = Trim(EmailVerk)
Cells(k, 8) = Trim(NameVerk)
Cells(k, 9) = Trim(StrasseVerk)
Cells(k, 10) = Trim(OrtVerk)
Cells(k, 11) = Trim(MitgliedsnameHoechst)
Cells(k, 12) = Trim(EmailHoechst)
Cells(k, 13) = Trim(NameHoechst)
Cells(k, 14) = Trim(StrasseHoechst)
Cells(k, 15) = Trim(OrtHoechst)
k = k + 1
Workbooks("Input.txt").Activate
End If
Next i

Workbooks("Auswertung.xls").Activate
End Sub

  

Re: Textdatei variabel auslesen
von: Hans W. Herber
Geschrieben am: 10.06.2002 - 07:25:30

Hallo Hartmut,

der Königsweg wäre, das für den Email-Aufbau verantwortliche Script - CGI oder was auch immer - zu veranlassen, vernünftig auslesbare Daten zu liefern.

Da man darauf aber nicht immer Einfluß hat, nachfolgend eine Routine, die davon ausgeht, dass die Email-Zeilen so aussehen:
Telefon: 02683-949014


Sub Auslesen()
   Dim iRow As Integer
   Dim sTxt As String
   For iRow = 1 To 20
      sTxt = Left(Cells(iRow, 1).Value, _
         InStr(Cells(iRow, 1).Value, " ") - 1)
      Select Case sTxt
         Case "Email"
            sEmail = Right(sTxt, Len(sTxt) - InStr(sTxt, " "))
         Case "Telefon"
            sTelefon = Right(sTxt, Len(sTxt) - InStr(sTxt, " "))
      End Select
   Next iRow
End Sub

hans

  

Re: Textdatei variabel auslesen
von: Hartmut
Geschrieben am: 10.06.2002 - 09:51:01

Vielen Dank Hans,
für die schnelle Antwort ich versuche mal das Makro entsprechend umzubauen.
Gruss
Hartmut

 

Beiträge aus den Excel-Beispielen zum Thema "Textdatei variabel auslesen"