VBA zwei txt.Dateien, Datensätze anhand von Suchkriterien lokalisieren , Datensätze bearbeiten
Guten Tag,
könntet ihr mir bitte helfen, bin ein VBA-Anfänger, habe zwar schon einiges gemacht allerdings nur mit xls. Dateien. Bei dieser Aufgabe habe ich 2 .txt-Dateien diese sehen wie folgt aus:
Datei 1:
<Titel>
<ID>657</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
<Info>...</Info>
</Titel>
<Titel>
<ID>111</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Rating>5</Rating>
<Info>...</Info>
</Titel>
<Titel>
<ID>012</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Mama Mia.mp3/Abba Gold</Path>
<Rating>4</Rating>
<Info>...</Info>
</Titel>
Datei 2:
<Titel>
<ID>555</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Mama Mia.mp3</Path>
<Rating>3</Rating>
<Info>...</Info>
</Titel>
<Titel>
<ID>560</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Info>...</Info>
</Titel>
<Titel>
<ID>570</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>
<Rating>3</Rating>
<Info>...</Info>
</Titel>
Die Aufgabe hierzu ist wie folgt. Wie ihr seht gibt es in diesen Txt. Dateien jeweils 3 Datensätze. Ein Datensatz beginnt immer mit <Titel> und endet mit </Titel> und besteht aus Artist, Album, Pfad, Rating und Info. Das Rating aus Datei1 soll in Datei2 übernommen werden.
D.h. der Programmablauf sollte in etwa so aussehen: Erstelle Datei3 (leere txt.Datei). Kopiere ersten Datensatz (<Titel>...</Titel> aus Datei2 und Suche den selben Datensatz anhand von "Artist", "Album" und "/*.mp3" (in Path) in Datei1. Ersetze Rating in dem Datensatz von Datei2 der dem Datensatz von Datei1 entspricht, das ganze steht dann korrekt in Datei3.
wenn das Rating in Datei 1 nicht vorhanden ist soll es auch in Datei3 nicht vorhanden sein.
Könnt ihr mir bitte helfen.
Grüße
Phoboz
könntet ihr mir bitte helfen, bin ein VBA-Anfänger, habe zwar schon einiges gemacht allerdings nur mit xls. Dateien. Bei dieser Aufgabe habe ich 2 .txt-Dateien diese sehen wie folgt aus:
Datei 1:
<Titel>
<ID>657</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
<Info>...</Info>
</Titel>
<Titel>
<ID>111</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Rating>5</Rating>
<Info>...</Info>
</Titel>
<Titel>
<ID>012</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Mama Mia.mp3/Abba Gold</Path>
<Rating>4</Rating>
<Info>...</Info>
</Titel>
Datei 2:
<Titel>
<ID>555</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Mama Mia.mp3</Path>
<Rating>3</Rating>
<Info>...</Info>
</Titel>
<Titel>
<ID>560</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Info>...</Info>
</Titel>
<Titel>
<ID>570</ID>
<Artist>ABBA</Artist>
<Album>ABBA Gold</Album>
<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>
<Rating>3</Rating>
<Info>...</Info>
</Titel>
Die Aufgabe hierzu ist wie folgt. Wie ihr seht gibt es in diesen Txt. Dateien jeweils 3 Datensätze. Ein Datensatz beginnt immer mit <Titel> und endet mit </Titel> und besteht aus Artist, Album, Pfad, Rating und Info. Das Rating aus Datei1 soll in Datei2 übernommen werden.
D.h. der Programmablauf sollte in etwa so aussehen: Erstelle Datei3 (leere txt.Datei). Kopiere ersten Datensatz (<Titel>...</Titel> aus Datei2 und Suche den selben Datensatz anhand von "Artist", "Album" und "/*.mp3" (in Path) in Datei1. Ersetze Rating in dem Datensatz von Datei2 der dem Datensatz von Datei1 entspricht, das ganze steht dann korrekt in Datei3.
wenn das Rating in Datei 1 nicht vorhanden ist soll es auch in Datei3 nicht vorhanden sein.
Könnt ihr mir bitte helfen.
Grüße
Phoboz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201941
Url: https://administrator.de/contentid/201941
Ausgedruckt am: 24.11.2024 um 22:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo Phoboz und willkommen im Forum!
Was hast Du denn schon, wo klemmt's noch? Poste doch mal Deinen bisherigen Ansatz (unter Verwendung der "Code"-Formatierung) ...
Grüße
bastla
Was hast Du denn schon, wo klemmt's noch? Poste doch mal Deinen bisherigen Ansatz (unter Verwendung der "Code"-Formatierung) ...
Grüße
bastla
Hallo Phoboz!
Soferne Du nicht ohnehin XML-spezifische Elemente verwenden sollst, würde ich Dir das VBS-RegExp-Objekt (kannst Du unter VBA mit
anstelle von
in VBS erzeugen) empfehlen ...
Um aus dem Pfad den Dateinamen zu isolieren könntest Du "
Grüße
bastla
Soferne Du nicht ohnehin XML-spezifische Elemente verwenden sollst, würde ich Dir das VBS-RegExp-Objekt (kannst Du unter VBA mit
Set regEx = CreateObject("VBScript.RegExp")
Set regEx = New RegExp
Um aus dem Pfad den Dateinamen zu isolieren könntest Du "
Split()
" oder "InStrRev()
" und "Right()
" oder am einfachsten die "GetFileName
"-Methode des "FileSystemObject
"s verwenden.Grüße
bastla
Hallo Phoboz!
Der Fehler passiert nicht in Zeile 20, sondern in Zeile 5 - wenn Du "
Noch zu
Grüße
bastla
Der Fehler passiert nicht in Zeile 20, sondern in Zeile 5 - wenn Du "
Split()
" verwendest, entsteht aus dem String ein Array ...Noch zu
muss es in VBA machen
Da Du das "Scripting.FileSystemObject" (kein VBA-Element) verwendest (verwenden darfst), wäre es nur konsequent, auch "VBScript.RegExp" einzusetzen - die Sprache der "Umgebung" bleibt in beiden Fällen VBA.Grüße
bastla