# Filtern mit einer externen Textdatei

**URL:** <https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254>\
**Category:** Allgemein\
**Created:** [December 1, 2022, 5:42am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254 "2022-12-01T05:42:54Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 5:42am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/1 "2022-12-01T05:42:55Z")

</div>

Hallo,  
ich habe eine 200 zeilige Textdatei `Interpret - Songtitel` mit der ich alle gleichnamigen Einträge im Mp3Tag anzeigen lassen möchte.

Ist das möglich, wenn ja, wie gehe ich da vor?

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [December 1, 2022, 6:43am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/2 "2022-12-01T06:43:59Z")

</div>

MP3tag soll jeweils 1 Zeile aus der Textdatei lesen und dann nach dem gefundenen Begriff filtern?  
Fällt mir nichts ein, wie das gehen können soll.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 6:48am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/3 "2022-12-01T06:48:10Z")

</div>

> [@ohrenkino](#):
>
> Fällt mir nichts ein, wie das gehen können soll.

Ich hab's geahnt, aber da ich nur einen minimalen Bruchteil der MP3Tag-Funktionen kenne, hab ich sicherheitshalber nachgefragt.  
Danke

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [December 1, 2022, 6:55am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/4 "2022-12-01T06:55:59Z")

</div>

Naja, es bliebe natürlich der Kopieren&Einfügen-Weg aus der geöffneten Textdatei.  
Ich wüsste jetzt auch nicht, was denn nach dem Filtern des ersten Begriffs passieren soll - müsste, wenn die Liste der angezeigten Dateien gefiltert wurde, dann nicht erst mal ausgewählt und irgendwas damit gemacht werden, bevor dann der nächste Filter-Begriff genommen wird?  
Und was soll passieren, wenn die Filterung zu keiner angezeigten Datei führt.  
All dies sind ggf. Gründe, warum es diese Funktion nicht gibt.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 7:20am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/5 "2022-12-01T07:20:02Z")

</div>

Mein Hintergrund:  
ich habe, wie schon des öfteren erwähnt, eine Access-DB aufgebaut, in der ich alle MP3Tag-Songs eingelesen hab, diese Richtung `MP3Tag->Textexport->AccessDBimport` klappt mittlerweile hervorragend mit nur wenigen Klicks.  
Wenn ich nun in Access nach Sänger oder Sängerin filtere und das Ergebnis in eine Textdatei schreibe um dann mit dem Ergebnis im MP3Tag weiterzuarbeiten, stoße ich an Grenzen.  
Was ich aus jetziger Sicht zu Beginn meiner Arbeit mit Mp3Tag versäumt habe:  
Benutzerfelder für "Mann" "Frau" "Band" "Frauenband" "Duo" "Instrumental" etc. anzulegen. Mit diesen Einträgen ginge es jetzt deutlich einfacher.  
Dann wäre es ein Klacks nach diesen Feldern zu Filtern.  
Wie sagt man so richtig: Hinterher ist man immer schlauer.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 7:26am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/6 "2022-12-01T07:26:34Z")

</div>

> [@Fotoknipser](#):
>
> Wie sagt man so richtig: Hinterher ist man immer schlauer.

Ginge dieser weg?  
Mp3Tag lässt ja zu, dass ich Felder in eine Datei exportiere, den Export bearbeite und zurück lese ...

Ich lege Die genannten Felder ein, exportiere neu, mit den nun noch leeren Feldern, fülle sie mit Access, und lese sie zurück.  
ich werd alles sichern und dann versuchen.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [December 1, 2022, 7:38am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/7 "2022-12-01T07:38:05Z")

</div>

wenn du in Access auch die Dateinamen gespeichert hast, kannst du die als Identifikator für den Datensatz nehmen.  
Du könntest dann einen Access-Export bauen, der als Felder am besten %\_PATH% und dann die

> [@Fotoknipser](#):
>
> Benutzerfelder für "Mann" "Frau" "Band" "Frauenband" "Duo" "Instrumental" etc

enthält.  
Und das importierst du dann mit einer geeigneten Maske mit Konverter\>Text-Datei - Tag.  
Der Import erlaubt auch das Anlegen neuer Felder.

---

<div class="post-metadata">

**Author:** ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)\
**Post date:** [December 1, 2022, 7:41am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/8 "2022-12-01T07:41:00Z")

</div>

> [@Fotoknipser](#):
>
> Wenn ich nun in Access nach Sänger oder Sängerin filtere und das Ergebnis in eine Textdatei schreibe um dann mit dem Ergebnis im MP3Tag weiterzuarbeiten, stoße ich an Grenzen.

Du könntest diese Textdatei als Playlist \*.m3u speichern, mit der entsprechenden Schreibweise natürlich:

> **[M3U](https://de.wikipedia.org/wiki/M3U)**
>
> M3U ist ein offenes Wiedergabelisten-Format für Mediendateien, die als Liste zusammengefasst sind. Die Spezifikation wurde Ende der 90er Jahre am Fraunhofer IIS in der Arbeitsgruppe um Karlheinz Brandenburg von Martin Sieler entwickelt. Ursprünglich für MP3-Dateien entwickelt (M3U steht für MP3-URL), lassen sich beliebige Medienformate durch M3U-Dateien aufrufen. Das M3U-Format wird von den meisten Medienspielern als Wiedergabeliste unterstützt. Ein alternatives Wiedergabelisten-Format (Playli M3...

Diese Playlist kannst Du dann in Mp3tag laden, was dann wiederum zur Auflistung nur dieser Dateien führt.  
Hinweis:  
Das ist kein wirklicher Filter, sondern es werden nur die Dateien geladen, die in der Playlist stehen.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 8:48am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/9 "2022-12-01T08:48:25Z")

</div>

> [@LyricsLover](#):
>
> Diese Playlist kannst Du dann in Mp3tag laden, was dann wiederum zur Auflistung nur dieser Dateien führt.  
> Hinweis:  
> Das ist kein wirklicher Filter, sondern es werden nur die Dateien geladen, die in der Playlist stehen.

Ohrenkino und du verfolgen zwei unterschiedliche Strategien.  
Für meine Zwecke ist deine Herangehensweise flexibler, da ich keine zusätzlichen Felder benötige und sie mir Platz für viele Spielereien lässt.

Es zeigt sich wieder, dass eine sehr sorgfältige Analyse des Datenbankdesigns nötig ist.  
Das bedeutet ich muss zu Beginn wissen, was am Ende herauskommt. (das ist schier unmöglich)  
Vielen Dank Euch beiden!!!

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [December 1, 2022, 10:01am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/10 "2022-12-01T10:01:27Z")

</div>

Hast du denn den Dateinamen mit erfasst?

Und eine Randnotiz als meine Meinung (aber da darf natürlich jeder machen, was er/sie will):  
Es zeigt sich für mich, dass es von Vorteil ist, die Daten da zu speichern, wo sie vorkommen, bei Tag-haltigen Dateien eben in den Tags und nicht an einem externen Ort.  
Ich bin mir ziemlich sicher, dass alle Daten auch in (benutzerdefinierten) Feldern untergebracht werden können und dann ohne Anwendungswechsel zur Informationsgewinnung genutzt werden können.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 1, 2022, 12:53pm UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/11 "2022-12-01T12:53:10Z")

</div>

> [@ohrenkino](#):
>
> und dann ohne Anwendungswechsel zur Informationsgewinnung genutzt werden können

Stimmt, nur dazu muss ich direkt von Anfang an wissen was ich will.  
Jetzt nach fast einem 3/4 Jahr weiß ich es immer noch nicht, und ich denke meine Wünsche an die DB werden immer mehr werden, je länger ich damit arbeite.

Als Beispiel kannst du das MP3Tag-Programm nehmen, es werden nach nach der Erstellung 1999 immer noch Änderungswünsche an das Programm gestellt.  
Ich bin der festen Überzeugung, dass, wenn Florian mit seinem heutigen wissen das Prg. neu aufsetzen würde, er es andsers gestalten würde.

zum Thema zurück:  
Aktuell hab ich mittels einer VBA-Routine aus der Textdatei eine M3U Datei erstellt (folgt später). Diese hab ich in MP3Tag eingelesen und siehe da, alle Dateien werden im MP3Tag aufgelistet.

---

<div class="post-metadata">

**Author:** ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)\
**Post date:** [December 1, 2022, 1:28pm UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/12 "2022-12-01T13:28:19Z")

</div>

> [@Fotoknipser](#):
>
> alle Dateien werden im MP3Tag aufgelistet

Ja. Und jetzt?  
Jetzt musst du doch alle Daten, die du eigentlich schon in Access hast, per Hand und mit MP3tag eintragen..  
Wenn deine Datenbank es hergibt, zusammen mit dem (möglichst vollständigen) Dateinamen in einer Textzeile und immer an der selben Stelle die noch fehlenden Daten aufzulisten, dann kannst du mit 2 Schritten alle fehlenden Daten in den Dateien speichern. Es ist dann kein Filtern o.ä. mehr nötig.  
Schritt 1: Export der Daten aus Access in eine Textdatei mit eindeutigen Feldtrennern und einem Datensatz pro Zeile.  
Schritt 2: mit Konverter\>Text-Datei - Tag import der Daten aus der Textdatei. Wo welche Daten hingehören wird gesteuert über den Dateinamen, der Teil des Datensatzes ist.  
Fertig.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 2, 2022, 10:01am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/13 "2022-12-02T10:01:34Z")

</div>

hier für interessierte die versprochene VBA-Routine:

```auto
Public Sub cmdPlayWinamp_m3u()
    Dim Pfad As String
    Dim aktZahl As Long
    Dim I As Long
   
    'Variable deklarieren
    If blnDeklariert = False Then
        Call deklaration
    End If
   
    'alte m3u-Datei löschen
    On Error Resume Next
    Kill "D:\zumLoeschen\txt-mp3tag.m3u"
    DoEvents
    On Error GoTo 0
    On Error GoTo cmdPlayWinamp_m3u
   
    'Tabelle/Abfrage die die gewünschten Daten enthält deklarieren
    Set rs4 = DB.OpenRecordset("tblMp3_Zusammenstellung", dbOpenDynaset)
    Close #1
    'den 'Steam' zum Export öffnen
    Open "D:\zumLoeschen\txt-mp3tag.m3u" For Output As #1
    
    'M3U - Kopfzeile
    Print #1, "#EXTM3U"
    
    'Die Tabelle öffnen
    With rs4
        'anzahl der Datensätze ermitteln
        .MoveLast
        aktZahl = .RecordCount
        .MoveFirst
    
        'ab hier die Daten Zeile für Zeile exportieren
        For I = 1 To aktZahl
            Pfad = ""
            Pfad = "#EXTINF:"
            Pfad = Pfad & Trim(.Fields("Dauer_Sek")) & ","
            Pfad = Pfad & Trim(.Fields("Interpred_titel")) & vbCrLf
            Pfad = Pfad & Trim(.Fields("pfad"))
            Pfad = Pfad & Trim(.Fields("dateiname"))
            Print #1, Pfad
            .MoveNext
        Next I
    End With
    
    'alles schließen
    Close #1
    Set rs4 = Nothing
    
cmdPlayWinamp2a:
    'Fertigmeldung
    MsgBox "ok"
    Exit Sub
cmdPlayWinamp_m3u:
    MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
    Resume Next
End Sub

```

---

<div class="post-metadata">

**Author:** ![LyricsLover](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/l/c6cbf5/32.png) [@LyricsLover](https://community.mp3tag.de/u/LyricsLover)\
**Post date:** [December 2, 2022, 10:19am UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/14 "2022-12-02T10:19:18Z")

</div>

> [@Fotoknipser](#):
>
> ```auto
> Public Sub cmdPlayWinamp_m3u()
> ...   
> 'Variable deklarieren
> If blnDeklariert = False Then
> Call deklaration
> End If
> ...
> Kill "D:\zumLoeschen\txt-mp3tag.m3u"
> ...
> Set rs4 = DB.OpenRecordset("tblMp3_Zusammenstellung", dbOpenDynaset)
> ...
> Open "D:\zumLoeschen\txt-mp3tag.m3u" For Output As #1
>     
> End Sub
> 
> ```

Auch wenn das jetzt nichts mehr mit dem Thema zu tun hat:

1. In Deinem Code fehlt der Abschnitt für `deklaration`.
2. Die boolesche Variable `blnDeklariert` wird selber nirgends deklariert.
3. Die DB-Definition für `DB.OpenRecordset` steht nirgends

Dieser VBA-Code funktioniert ausschliesslich, wenn man exakt die gleichen Pfad- und Dateiangaben benutzt. Oder wenn man den Code zuerst manuell beim `KILL` und `OPEN` anpasst.  
Das Muster ist sicher gut gemeint @Fotoknipser, es hilft aber andern Mp3tag-Benutzern wohl nur in sehr minimalem Umfang. Ich würde deshalb unbedingt die zwingenden Voraussetzungen (MS Access, Pfade, Tabellennamen etc) erwähnen.

---

<div class="post-metadata">

**Author:** ![Fotoknipser](https://community.mp3tag.de/user_avatar/community.mp3tag.de/fotoknipser/32/10524_2.png) [@Fotoknipser](https://community.mp3tag.de/u/Fotoknipser)\
**Post date:** [December 2, 2022, 12:29pm UTC](https://community.mp3tag.de/t/filtern-mit-einer-externen-textdatei/59254/15 "2022-12-02T12:29:17Z")

</div>

> [@LyricsLover](#):
>
> Ich würde deshalb unbedingt die zwingenden Voraussetzungen (MS Access, Pfade, Tabellennamen etc) erwähnen.

Stimmt, ich hatte es tatsächlich **nur** gut gemeint.

zu 2 + 3: Die DB-Definition für Die DB-Definition für `DB.OpenRecordset` steht nirgends:

**Im Header des Moduls:**

```auto
Option Compare Database
Option Explicit
Public rs4 As DAO.Recordset
Public blnDeklariert As Boolean

```

zu 1: die **Deklarationsroutine** :

```auto
Public Sub deklaration()
   On Error GoTo deklaration_Error

   Set DB = CurrentDb
   blnDeklariert = True

   On Error GoTo 0
   Exit Sub
deklaration_Error:
   MsgBox "Error " & Err.Number & " (" & Err.Description & ")"
   Resume Next
End Sub

```

Danke für den Hinweis.  
Zukünftig werde ich solche Code-Schnipsel nur noch eintragen, wenn der antwortende User danach fragt.
