Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Open For Append - Reihenfolge

Open For Append - Reihenfolge
Heiko
Hallo,
Wenn ich mit der Methode append Daten an eine bestehende Textdatei anhaenge, werden die Daten ja hinten angehaengt. Der aktuelleste Eintrag ist also am Ende.
Wenn ich nun die Textdatei zum Lesen oeffne und die Daten mit Input bzw LineInput lese, faengt die Leserei ja von vorne an, also beim aeltesten Eintrag.
Gibt es einen Weg, entweder den aktuellsten Eintrag vorne einzufuegen oder die Datei von hinten zu lesen?
Ersteres waere mir lieber, weil es sich immer um ganze Textbloecke aus jeweils rund 20 Zeilen handelt...
Wuerde mich ueber Tips freuen,
Heiko
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Open For Append - Reihenfolge
21.11.2011 20:48:56
Josef

Hallo Heiko,
da musst du schon selber eingreifen, z. B. so.
Sub textAnhängen()
  Dim strFile As String, strOld As String, strNew As String
  Dim ff As Integer
  
  strFile = "C:\DeineTextdatei.txt" 'Textdatei
  
  strNew = "Der neue text"
  
  ff = FreeFile
  
  Open strFile For Binary As #ff
  strOld = Space$(LOF(ff))
  Get #ff, , strOld
  Close #ff
  
  strNew = strNew & vbCrLf & strOld
  
  ff = FreeFile
  
  Open strFile For Output As #ff
  Print #ff, strNew;
  Close #ff
  
End Sub



« Gruß Sepp »

Anzeige
noch eine Variante
21.11.2011 21:12:46
CitizenX
Hi,
Sub Aktuell()
Dim Filename As String
Dim strTemp As String, strNew As String
Dim FSO As Object, oStream As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Filename = "D:\XXXXXXXXXXX\Test.txt" 'Pfad anpassen
strNew = "Das ist dein neuer Text"
'Textdatei öffnen & temporär auslesen
Set oStream = FSO.OpenTextFile(Filename, 1)
strTemp = oStream.ReadAll
oStream.Close
'Datei öffnen & Überschreiben
Set oStream = FSO.OpenTextFile(Filename, 2)
strTemp = strNew & vbNewLine & strTemp
oStream.Write strTemp
oStream.Close
Set oStream = Nothing
Set FSO = Nothing
End Sub

Grüße
Steffen
Anzeige
AW: Open For Append - Reihenfolge
21.11.2011 21:31:21
Heiko
hi, Josef und CitizenX,
vielen Dank fuer Eure Beitraege!
Ich habe bereits Josefs Metode angepasst und eingebaut - klappt sehr gut!
Die andere Variante probier ich aber auch mal aus.
Also, danke schoen nochmals,
Heiko
;
Anzeige
Anzeige

Infobox / Tutorial

Reihenfolge beim Anhängen von Daten in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um Daten in einer bestehenden Textdatei mit VBA anzuhängen und sicherzustellen, dass der neueste Eintrag oben steht, kannst Du folgende Schritte befolgen:

  1. Erstelle ein neues Modul in deinem VBA-Editor.
  2. Füge den folgenden Code ein, um die Daten anzuhängen:
Sub textAnhängen()
    Dim strFile As String, strOld As String, strNew As String
    Dim ff As Integer

    strFile = "C:\DeineTextdatei.txt" ' Pfad zur Textdatei
    strNew = "Der neue Text"

    ff = FreeFile
    Open strFile For Binary As #ff
    strOld = Space$(LOF(ff))
    Get #ff, , strOld
    Close #ff

    strNew = strNew & vbCrLf & strOld

    ff = FreeFile
    Open strFile For Output As #ff
    Print #ff, strNew;
    Close #ff
End Sub
  1. Passe den Pfad der Textdatei und den neuen Text an Deine Bedürfnisse an.
  2. Führe das Makro aus, um die Daten anzuhängen.

Mit dieser Methode wird der neueste Eintrag an den Anfang der Datei gesetzt.


Häufige Fehler und Lösungen

Fehler: Fehler beim Öffnen der Datei.
Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist und Du die erforderlichen Berechtigungen hast, um die Datei zu lesen und zu schreiben.

Fehler: Daten werden nicht wie gewünscht angehängt.
Lösung: Überprüfe, ob Du den richtigen Modus (For Output) verwendest, um sicherzustellen, dass die Datei überschrieben wird.


Alternative Methoden

Eine alternative Methode, die auch für das Anhängen von Daten verwendet werden kann, ist die Verwendung der FileSystemObject. Hier ein Beispiel:

Sub Aktuell()
    Dim Filename As String
    Dim strTemp As String, strNew As String
    Dim FSO As Object, oStream As Object

    Set FSO = CreateObject("Scripting.FileSystemObject")
    Filename = "D:\XXXXXXXXXXX\Test.txt" 'Pfad anpassen
    strNew = "Das ist dein neuer Text"

    'Textdatei öffnen & temporär auslesen
    Set oStream = FSO.OpenTextFile(Filename, 1)
    strTemp = oStream.ReadAll
    oStream.Close

    'Datei öffnen & Überschreiben
    Set oStream = FSO.OpenTextFile(Filename, 2)
    strTemp = strNew & vbNewLine & strTemp
    oStream.Write strTemp
    oStream.Close

    Set oStream = Nothing
    Set FSO = Nothing
End Sub

Praktische Beispiele

  1. Beispiel 1: Du möchtest einen neuen Eintrag für ein Protokoll hinzufügen. Verwende die oben genannten Methoden, um sicherzustellen, dass der neueste Eintrag immer oben steht.

  2. Beispiel 2: Wenn Du regelmäßig Daten aus Excel exportierst und in eine Textdatei speicherst, kannst Du diese Methoden verwenden, um die Daten konsistent zu halten.


Tipps für Profis

  • Nutze vba open for append, um Daten an das Ende der Datei anzuhängen, ohne die bestehenden Daten zu überschreiben.
  • Berücksichtige die Verwendung von vba open file for output, wenn Du sicherstellen möchtest, dass die Datei gelöscht und neu erstellt wird.
  • Experimentiere mit vba append und for append as, um verschiedene Datenformate zu handhaben.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen For Append und For Output?
For Append fügt Daten am Ende der Datei hinzu, während For Output die Datei überschreibt.

2. Wie kann ich die Reihenfolge der Einträge ändern?
Du kannst den oben genannten Code verwenden, um den neuesten Eintrag an den Anfang der Datei zu setzen.

3. Funktioniert das auch in Excel 2010?
Ja, die genannten Methoden sind in Excel VBA ab Version 2007 verfügbar und funktionieren auch in Excel 2010.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige