Zwei Textdateien vergleichen und doppelte Werte löschen

  • #1
S

Sumsum01

Aktives Mitglied
Themenersteller
Dabei seit
18.01.2005
Beiträge
25
Reaktionspunkte
0
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
  • #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
 
Thema:

Zwei Textdateien vergleichen und doppelte Werte löschen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben