Zwei Textdateien vergleichen und doppelte Werte löschen

Dieses Thema Zwei Textdateien vergleichen und doppelte Werte löschen im Forum "Microsoft Office Suite" wurde erstellt von Sumsum01, 10. Jan. 2007.

Thema: Zwei Textdateien vergleichen und doppelte Werte löschen Hallo, ich habe zwei Textdateien mit unterschiedlichen Inhalt. Wobei gewisse Teile übereinstimmen. Textdatei a)...

  1. Hallo,

    ich habe zwei Textdateien mit unterschiedlichen Inhalt. Wobei gewisse Teile übereinstimmen.

    Textdatei a) mit folgendem Beispielsinhalt

    123 Apfel123
    456 Birne
    548 Banane
    962 Kiwi
    etc...

    Textdatei b) mit folgendem Beispielsinhalt:

    Birne
    Kiwi
    u.ä.


    Nun möchte ich gerne den ersten Wert aus der Textdatei b) nehmen und mit der Textdatei a) vergleichen und wenn er den Wert in der Textdatei a findet, dann soll er die gesamte Zeile aus der Textdatei a) löschen. Und dann soll er den zweiten Wert aus der Textdatei b) holen und wieder in der Textdatei a) schauen und ggf. löschen usw...

    Wie bekomme ich so etwas hin?! Ist das überhaupt möglich?

    Danke Euch schon mal recht herzlichst.

    Gruß Sabine
     
  2. Ola,

    vielleicht nicht gleich automatisch, aber wenn die Struktur übereinstimmt, versuch einfach http://www.wintotal.de/Software/?id=2075

    das ist mein erklärter Favorit für solche Aufgaben ...
     
  3. @PCDjoe ,

    danke Dir für Deinen Hinweis, aber das ist es nicht was ich suche!
    Vielleicht sollte mein Beitrag in den Bereich Anwendungsentwicklung verschoben werden?! Da wäre er sicherlich besser angesiedelt... danke  :)

    Ich würde gerne ein kleines VBA-Script schreiben, aber mit VBA habe ich noch nicht wirklich viel zu tun - und einen VBA-Editor gibt es in dem Windows-Texteditor nicht. Natürlich könnte ich die Texte nach Word kopieren und dann den VBA-Editor nutzen, aber das wäre zu umständlich, würde gerne den einfachsten Weg gehen.

    Kann mir jemand Tipps geben wo und wie ich das Script ablegen und starte?

    Das Script werde ich mit der VBA Hilfe schon hinbekommen, wenn ich einen kleinen Ansatz habe...

    Gruß Sabine
     
  4. Ola,

    also wenn du das gleich so hingeschrieben hättest ;-)
     
  5. Entschuldigung :( war mein Fehler....
     
  6. ola,

    nein, kein Fehler, so war es nicht gemeint :)
     
  7. Hallo SumSum01,

    Versuchs mal mit folgendem Code:
    Code:
    Option Explicit
    
    Private Const cPFAD = C:\Test TXTDateien\
    Private Const cD1 = TestDatei1.txt-> Datei mit Suchbegriffen
    Private Const cD2 = TestDatei2.txt-> Datei, die modifiziert wird
    Private Const cPFAD_D1 = cPFAD & cD1
    Private Const cPFAD_D2 = cPFAD & cD2
    
    
    Function ZweiTXTDateienAbgleichen()
      Dim Handle__1 As Integer, Handle__2 As Integer, Handle__3 As Integer, Handle__4 As Integer
      Dim sSicherungsdateiname As String, sDateinameFull As String
      Dim sSuchbegriff As String, sLineD2 As String, sLineAusKopieDesOriginals As String
      Dim pos As Long, bGefunden As Boolean, lSatzNr As Long, lSatzNr2 As Long
      
     ->Sicherung anlegen
      sSicherungsdateiname = cPFAD & Sicherung & Format(Now(), yyyymmddhhnnss_) & cD2
      On Error Resume Next
      FileCopy cPFAD_D2, sSicherungsdateiname
      If Err.Number <> 0 Then
        Err.Clear: On Error GoTo 0
        MsgBox Datei  & cPFAD_D2 &  ist geöffnet und kann nicht gesichert werden.
        Exit Function
      End If
      On Error GoTo 0
      
      
     ->Datei1 mit Suchbegriffen öffnen
     ->Und Suchbegriffe nacheinander auslesen
      Handle__1 = FreeFile
      Open cPFAD_D1 For Input As #Handle__1
      Do While Not EOF(Handle__1)
        Line Input #Handle__1, sSuchbegriff
        If sSuchbegriff <>  Then
          Debug.Print Suchbegriff:  & sSuchbegriff
          
         ->Datei2 nach Suchbegriff durchsuchen
          Handle__2 = FreeFile
          bGefunden = False
          Open cPFAD_D2 For Input As #Handle__2
          lSatzNr = 0
          Do While Not EOF(Handle__2)
            lSatzNr = lSatzNr + 1
            Line Input #Handle__2, sLineD2
            pos = InStr(1, sLineD2, sSuchbegriff)
            If pos > 0 Then
              bGefunden = True
              Debug.Print Suchbegriff:  & sSuchbegriff &  gefunden in:  & sLineD2
              Exit Do
            End If
          Loop
          Close #Handle__2
          
         ->Suchbegriff gefunden ?
          If bGefunden Then
           ->Kopie des Orginals anlegen
            FileCopy cPFAD_D2, cPFAD_D2 & .MyCopy
            Handle__3 = FreeFile
           ->Kopie des Originals als Input
            Open cPFAD_D2 & .MyCopy For Input As #Handle__3
           ->neue Orginaldatei anlegen und mit Daten aus Kopie des Orginals füllen
           ->zu löschenden Satz dabei überspringen
            Handle__4 = FreeFile
            Open cPFAD_D2 For Output As #Handle__4
            lSatzNr2 = 0
            While Not EOF(Handle__3)
              lSatzNr2 = lSatzNr2 + 1
              Line Input #Handle__3, sLineAusKopieDesOriginals
              If lSatzNr2 <> lSatzNr Then Print #Handle__4, sLineAusKopieDesOriginals
            Wend
            Close #Handle__4
            Close #Handle__3
           ->Kopie des Orginals löschen
            Kill cPFAD_D2 & .MyCopy
          End If
        End If
      Loop
      Close #Handle__1
      
    End Function
     
Die Seite wird geladen...

Zwei Textdateien vergleichen und doppelte Werte löschen - Ähnliche Themen

Forum Datum
Zweiter Bildschirm wird nur noch teilweise erkannt! Windows 10 Forum 15. Okt. 2016
Zwei Heimnetzgruppenordner Windows 10 Forum 28. Aug. 2016
WLan funktioniert erst beim zweiten Start des Notebooks Windows 10 Forum 28. Aug. 2016
zweite Festplatte in einen Rechner einbauen. Hardware 28. Aug. 2016
Upgrade auf zwei Rechnern danach nur ein key Windows 10 Forum 6. Aug. 2015