Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
912to916
912to916
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Text in txt-Datei per Makro einfügen

Text in txt-Datei per Makro einfügen
12.10.2007 12:31:00
Stefan
Hallo liebe Excel Gemeinde,
ich hoffe, es kann mir jemand bei meinem folgenden Problem helfen.
Ich habe eine txt-Datei mit einigen hundert Zeilen. Jede Zeile beginnt entweder mit 10 oder 20 und besteht aus Daten, die an der vorhandenen Stelle verbleiben müssen, sowie aus Leerzeichen, die ebenso an der vorhandenen Stelle verbleiben müssen.
Ich möchte nun in jeder Zeile, die mit 10 beginnt, drei Leerzeichen (z.B. die Stellen 128-130) durch einen festen Eintrag ersetzen (XYZ). Wiei gesagt, nur bei den Zeilen, die mit 10 beginnen.
Hat da jemand eine Lösung für mich?
Vielen Dank schonmal für´s Lesen und bis hoffentlich bald.
Stefan

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
3 Zeichen in Textdatei ändern
12.10.2007 13:27:00
NoNet
Hallo Stefan,
leider gibt es für sequentielle Dateien (also auch Text-Dateien) mit unterschiedlicher Zeilenlänge keine Möglichkeit, eien Änderung direkt an einer definierten Stelle vorzunehmen. Daher hilft wohl nur, die Datei zeilenweise auszulesen, die ersten beiden Zeichen jeder Zeile zu prüfen und ggf. zu ändern und die Zeile in eine TEMPORÄRE Datei zu schreiben und die Originaldatei letztendlich durch diese TEMP-Datei zu erstzen.
Genau DIES macht das folgende Makro :
Sub ZeilenMit10Aendern()
    '12.10.2007, NoNet
    Dim Datei, Temp, Text, AnzStelle, Stelle, Zeile
    Datei = "C:\Temp\Daten10oder20.txt" 'Name der Textdatei
    Temp = Datei & ".tmp" 'Temporäre Datei
    Stelle = 128  'Ab Stelle 128
    AnzStelle = 3 '3 Zeichen ersetzen
    Text = "XYZ"  'Der Text, der eingefügt werden soll
    Open Datei For Input As 1 'Textdatei zum Lesen öffnen
    Open Temp For Output As 2 'TEMP-Datei zum Schreiben öffnen
    While Not EOF(1)
        Line Input #1, Zeile  'Zeile einlesen
        If Left(Zeile, 2) = "10" Then 'Wenn Zeile mit "10" beginnt
            Zeile = Left(Zeile, Stelle - 1) & Text & Mid(Zeile, Stelle - 1 + AnzStellen, Len(Zeile))
        End If
        Print #2, Zeile 'Zeile in TEMP-Datei schreiben
    Wend
    Close 'Alle Dateien schließen
    'ACHTUNG : Hier wird die TEXTDATEI gelöscht und durch die TEMPORÄRE Datei ersetzt :
    'Kill Datei
    'Name Temp As Datei
End Sub
Die Stelle, Anzahl der Stellen und den einzutragenden Text sowie den Dateinamen musst du natürlich noch anpassen !
Gruß, NoNet

Anzeige
Sollte "AnzStelleN = 3" heißen !! _oT
12.10.2007 13:31:00
NoNet
_oT = ohne Text

AW: Sollte "AnzStelleN = 3" heißen !! _oT
12.10.2007 14:16:00
Stefan
A B S O L U T beeindruckend. Vielen Dank. genau, was ich brauchte.
Im Bauhaus hätt ich dir jetzt ein Mitarbeiter-Lob-Kärtchen ausgefüllt ;)
Nur eines noch bitte:
Da die 10er Zeilen exakt 130 Zeichen lang sein sollen, sollen die Leerzeichen 128, 129, 130 durch den Text "XYZ" ersetzt werden. Mit deiner Lösung steht zwar der Text "XYZ" an den Stellen 128, 129, 130, aber dahinter folgen noch 2 Leerzeichen. Wie bekomme ich die denn noch weg?
Ich vermute, es liegt an folgender Programmcode-Zeile:
Zeile = Left(Zeile, Stelle - 1) & Text & Mid(Zeile, Stelle - 1 + AnzStellen, Len(Zeile))
Ich verstehe den Bereich ab "...Mid(Zeile, Stelle -1..." nicht so recht.
Gruß
Stefan

Anzeige
Dann lasse alles ab "& Mid(..." weg
12.10.2007 14:32:00
NoNet
Hallo Stefan,
Danke für das "Lobkärtchen", ich werde es mir ausdrucken und an die Wand hängen oder bei meinem nächsten BAUHAUS-Einkauf einlösen .
Der Teil & Mid(...) sorgt dafür, dass der Text ab Stelle 131 auch wieder angehängt wird, also z.B. :
Aus ABCDEFGHIJKLMNOPQRSTUVWXYZ werden ab Stelle 20 drei Zeichen durch "###" ausgetauscht :
Das ergibt ABCDEFGHIJKLMNOPQRS###WXYZ - das "WXYZ" muss also noch hinter diese drei Zeichen !
Wenn es jedoch die letzten drei Zeichen der jeweiligen Zeilen sind, dann kannst Du den Teil & Mid(...) aus o.g. Code auch weglassen, dann sollte es klappen !
Gruß, NoNet

Anzeige
AW: Dann lasse alles ab "& Mid(..." weg
12.10.2007 14:57:00
Stefan
PERFEKT
Danke nochmals.
Gruß
Stefan

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige