schuhmann
Goto Top

Excel Makro Ünterstützung erbeten

Hallo,
ich versuche mich gerade an einem Excel Makro, was ich leider nicht ganz hinbekommen, da der Aufbau der Quelldatei nicht immer identisch ist.

Die Quelldatei hat folgenden Aufbau:

Schlagwort | Beschreibung1
TextA | TextB
TextC | TextD
TextE | TextF
Schlagwort | Beschreibung2
TextA | TextB
Schlagwort | Beschreibung3

Die einzelnen "Blöcke" fangen also immer mit dem selben Schlagwort an und hören mit ----------------------- auf.
Zwischen Start und Ende ist eine variable Anzahl Zeilen.
Diese Datei soll in folgendes Format überführt werden:

Schlagwort | Beschreibung1 | TextA | TextB | TextC | TextD | TextE | TextF | ------------------------------------------
Schlagwort | Beschreibung2 | TextA | TextB |------------------------------------------
Schlagwort | Beschreibung3 | ...... | ------------------------------------------

Mein Makro ist leider nur sehr einfach und ich komm mit der Variablen Anzahl an Zeilen nicht klar (mit Makrorekorder aufgezeichnet).

Sinngemäßer Ablauf:
In Zeile mit Schlagwort gehen, folgende Zeilen bis einschlielich ---------- anfügen und löschen.

Wäre echt klasse wenn mir da jemand helfen könnte.

Gruß, der Schuhmann
Kommentar vom Moderator Biber am Apr 07, 2011 um 14:59:45 Uhr
Excel Makro Ünterstützung erbeten
Wo gibt es denn eine "Ünterstützung"?? In einem Deutsch-Türkischen Excel?
Süüss...

güle güle
Pul Biber

Content-Key: 164167

Url: https://administrator.de/contentid/164167

Printed on: April 19, 2024 at 12:04 o'clock

Member: bastla
bastla Apr 07, 2011 at 14:52:31 (UTC)
Goto Top
Hallo shuhmann!

Du musst die einzelnen eingelesenen Zeilen auf die entsprechenden Kriterien (Blockanfang, Blockende) hin untersuchen und entsprechend eine neue Ausgabezeile beginnen, fortsetzen oder in die Zieldatei schreiben:
Ein = "D:\Textdatei.txt"  
Aus = "D:\Textdatei-satzweise.txt"  

Anfang = "Schlagwort |"  
Ende = "--------------"  

LAnfang = Len(Anfang) 'Längenermittlung nur einmal durchführen  
LEnde = Len(Ende)
Set fso = CreateObject("Scripting.FileSystemObject")  
Set DateiEin = fso.OpenTextFile(Ein)
Set DateiAus = fso.CreateTextFile(Aus)

Do Until DateiEin.AtEndOfStream
    ZeileEin = DateiEin.ReadLine
    If Left(ZeileEin, LAnfang) = Anfang Then
        ZeileAus = ZeileEin
    ElseIf Left(ZeileEin, LEnde) = Ende Then
        ZeileAus = ZeileAus & " | " & ZeileEin  
        DateiAus.WriteLine ZeileAus
    Else
        ZeileAus = ZeileAus & " | " & ZeileEin  
    End If
Loop

DateiAus.Close
DateiEin.Close
Grüße
bastla
Member: schuhmann
schuhmann Apr 08, 2011 at 07:25:43 (UTC)
Goto Top
Vielen Dank Bastla,
das Makro läuft wirklich super.

@Biber
Oh, das ist mir wirklich nicht aufgefallen beim Schreiben. Es war auch keine Absicht, aber es ist lustig.

Gruß, der Schuhmann