Ich habe vor längerer Zeit ein Excelmakro geschrieben in dem ich meine Musikdateien einlese und pro Titel die Tags in eine Exceltabelle schreibe. Gestern habe ich diese Prozedur wieder einmal laufen lassen und festgestellt dass bei einigen neu hinzugefügten Titeln die Tags(TIT2, TALB, ...) zwischen den einzelnen Buchstaben Sonder/oder Leerzeichen sind. Das schaut dann z. B. so aus: B e a t l e s. In welchem Format muss ich die Datei in MP3TAG schreiben damit diese Zeichen verschwinden?
"B e a t l e s" passiert wenn du utf16 als ansi ließt (weil es für Zeichen < 7F immer 00h 00h .... abgelgt ist).
Das excel utf16 lesen kann, sollte dein exportmarkro sollte die datei aber mit der UTF16BOM beginnen, dann musst du aber auch alles in UTF16 ausgeben.
Poste doch mal dein Makro, dann kann dir hier sicher jemand helfen.
Btw: gibt dir MP3Tag das Encoding raus?
Danke für die Antwort, so schaut die eingelesen mp3-Datei in VisualBasic aus. Zuerst eine "gute" und dann eine mit Sonderzeichen dazwischen:
Edit: Removed binary data from post, please use screenshots for such data
Teil vom Makrocode:
.
.
.
Worksheets(1).Select '-->Liste der mp3-Dateien
LastFile = Cells(Rows.Count, 1).End(xlUp).Row
For FoundFiles = 2 To LastFile
Filename = Worksheets(1).Range("A" & FoundFiles) & Worksheets(1).Range("B" & FoundFiles)
OpenZeileMusik = FreeFile
Open Filename For Binary As #OpenZeileMusik
FileContent = String(1024, "*")
Get #OpenZeileMusik, , FileContent
Close #OpenZeileMusik
Debug.Print FileContent
ID3Position = 11
ID3Tag = Mid(FileContent, ID3Position)
While ID3Position < Len(FileContent)
ID3Frame = Left(ID3Tag, 4)
ID3Tag = Mid(ID3Tag, 12)
ID3Länge = Mid(FileContent, ID3Position + 4, 4)
ID3FrameLänge = Asc(Mid(ID3Länge, 1, 1)) * &H200000
ID3FrameLänge = ID3FrameLänge + Asc(Mid(ID3Länge, 2, 1)) * &H4000
ID3FrameLänge = ID3FrameLänge + Asc(Mid(ID3Länge, 3, 1)) * &H80
ID3FrameLänge = ID3FrameLänge + Asc(Mid(ID3Länge, 4, 1))
Worksheets(2).Select
Select Case ID3Frame
Case Is = "TIT2" 'Titel
Range("A" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TPE1" 'Interpret
Range("B" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TALB" 'Album
Range("C" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TCON" 'Genre
Range("D" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TCOM" 'Komponist
Range("E" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TSOT" 'Titelsort
Range("F" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TSOA" 'Albumsort
Range("G" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Is = "TCMP" 'Compilation
Range("H" & FoundFiles) = Mid(FileContent, ID3Position + 11, ID3FrameLänge - 1)
Case Else
If ID3Frame Like "[A-Z]" Then
Range("I" & FoundFiles) = ID3Frame
End If
GoTo Weiter
End Select
ID3Position = ID3Position + 11 + ID3FrameLänge - 1
ID3Tag = Mid(ID3Tag, ID3FrameLänge)
Wend
Weiter:
Next FoundFiles
.
.
.
Bin für jeden hilfreichen Hinweis dankbar! Danke im voraus!!!
zur Ergänzung meine Mp3Tag-Optionen: Lesen: id3v2, Schreiben: id3v2 id3v2.3 UFT-16
Wenn noch nicht vorhanden, dann im Dialog "Mp3tag/Ansicht/Spalten" bitte zwei Spalten einrichten:
Name: TagRead (TagTypes)
Wert: %_tag_read%[' ('%_tag%')']
Name: Char Enc
Wert: %_id3v2_character_encoding%
Dann für eine 'alte' Datei und für eine 'neue' Datei die in Mp3tag angezeigten Werte hier zeigen.
DD.20170826.1438.CEST
Kannst du damit jetzt herausfinden, welche Datei mit welchem Tagtyp für dein Programm funktioniert?
DD.20170826.1524.CEST
Ist mir gerade aufgefallen dass ich zwei verschiedene Char Encodes habe. Ist mein Problem gelöst wenn ich alles mit UTF-8 neu ausgebe? Danke für die Hilfe!
Das kannst du ausprobieren ... mit einer Testdatei.
Einstellung ändern für das Tag-Schreiben in "Mp3tag/Extras/Optionen/Tags/Mpeg/Schreiben".
DD.20170826.1536.CEST
Vielen Dank an alle beteiligten Helfer für den tollen Support! Mit den Einstellungen "ID3v2.4 (ID3vl ID3v2.4 APEv2) UTF-8" kann ich die Dateien wieder fehlerfrei in meiner EXCEL-Prozedur verarbeiten.
Muss ich den Eintrag als "gelöst" kennzeichnen? Und wenn JA WO?
Was mich hier wundert und im Vergleich zu den später gezeigten Tag-Daten:
Du behandelst nur ID3v2.3 Tags, hast aber noch APE Tags in den Dateien. Die APE Tags scheinen nie verändert zu werden. Also sind die vermutlich mit irgendwelchen, aber nicht mehr den aktuellen Daten versehen.
Noch ein Hinweis: der Windows Explorer und WMP kommen (je nach OS Version) nicht mit V2.4 Tags klar. Von daher ist das Schreiben von V2.4 Tags vermutlich suboptimal.
Ich habe erst einmal alle Tags außer ID3v2 gelöscht und dann alles mit ID3v2.4 UTF-8 überschrieben und mein Excelmakro funktioniert einwandfrei.
Ich bin zu sehr Laie um ins Detail zu gehen, bin froh dass es funkt - danke für alle Hinweise!
