von Raindancer » Mo, 02.10.2006 21:41
Aaahh jaa, an Musikdateien hab ich gerade nicht gedacht (hab keine MP3).
Jo, das geht mit den String-Funktionen (Instr, Len, Mid und/oder Split). Gibt es sicher mehrere Möglichkeiten zu coden.
Die folgenden Codezeilen gehen von der Voraussetzung aus, dass die Dateienamen immer nach Deinem Muster aufgebaut sind: "Al Foul - 10 Bucks.mp3"
Also immer Interpret und Titel in der vorgegebenen Reihenfolge und durch Bindestrich getrennt, Dateiendung '.mp3'.
Dann legen wir mal los.
Die Variable 'sNamen' enthält ja schon den Dateinamen und den zerlegen wir wie folgt. (Erforderlich ist noch ein Array 'Dim TeilStrings() as string' für Split)
Als erstes entfernen wir '.mp3'. Das sind die letzten 4 Zeichen, also mit Left: 'sName = Left(sNamen, 1, (Len(sNamen) - 4))'
sName enthält nun nur noch 'Al Foul - 10 Bucks' und das zerlegen wir mit Split. Split schreibt die Teile des Strings in ein Array, Trennzeichen ist hier der Bindestrich.
TeilStrings() = Split(sNamen, "-")
TeilStrings(0) und TeilStrings(1) enthalten nun jeweils Interpret und Titel
Fertig. Ich habe das mal ins Makro eingefügt (die neuen Zeilen in Fettdruck):
sub main
Dim Desktop as object
Dim Mappe as object
Dim Tabelle as object
Dim oFolderPicker as object
Dim TeilStrings() as string
Dim sNamen As String
Dim sPath as String
Dim i as long
Dim dummy()
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sPath = ConvertFromUrl(oFolderPicker.directory & "/")
' msgbox sPath
Desktop = CreateUnoService ("com.sun.star.frame.Desktop")
Mappe = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, dummy())
Tabelle = Mappe.getSheets().getbyIndex(0)
Tabelle.getCellbyPosition(0,0).string = sPath
i = 1
sNamen = Dir(sPath , 0)
Do While sNamen <> ""
sNamen = Left(sNamen, (Len(sNamen) - 4))
TeilStrings() = Split(sNamen, "-")
Tabelle.getCellbyPosition(1,i).string = Trim(TeilStrings(0))
Tabelle.getCellbyPosition(2,i).string = Trim(TeilStrings(1))
i = i + 1
sNamen = Dir
Loop
End Sub
Deutlicher Hinweis:
Dieses Makro läuft jetzt nicht mehr für normale Verzeichnisse!
Es läuft nur noch, wenn ALLE Dateinamen im Verzeichnis Deinem Muster "Al Foul - 10 Bucks.mp3" entsprechen! Ein einziger anderer Dateiname und es hagelt Fehlermeldungen.
Genaugenommen müsste man noch eine Prüfung des Dateinamens "sNamen' einbauen.
Gruß
Ralf
Aaahh jaa, an Musikdateien hab ich gerade nicht gedacht (hab keine MP3).
Jo, das geht mit den String-Funktionen (Instr, Len, Mid und/oder Split). Gibt es sicher mehrere Möglichkeiten zu coden.
Die folgenden Codezeilen gehen von der Voraussetzung aus, dass die Dateienamen [u]immer[/u] nach Deinem Muster aufgebaut sind: "Al Foul - 10 Bucks.mp3"
Also immer Interpret und Titel in der vorgegebenen Reihenfolge und durch Bindestrich getrennt, Dateiendung '.mp3'.
Dann legen wir mal los.
Die Variable 'sNamen' enthält ja schon den Dateinamen und den zerlegen wir wie folgt. (Erforderlich ist noch ein Array 'Dim TeilStrings() as string' für Split)
Als erstes entfernen wir '.mp3'. Das sind die letzten 4 Zeichen, also mit Left: 'sName = Left(sNamen, 1, (Len(sNamen) - 4))'
sName enthält nun nur noch 'Al Foul - 10 Bucks' und das zerlegen wir mit Split. Split schreibt die Teile des Strings in ein Array, Trennzeichen ist hier der Bindestrich.
TeilStrings() = Split(sNamen, "-")
TeilStrings(0) und TeilStrings(1) enthalten nun jeweils Interpret und Titel
Fertig. Ich habe das mal ins Makro eingefügt (die neuen Zeilen in Fettdruck):
sub main
Dim Desktop as object
Dim Mappe as object
Dim Tabelle as object
Dim oFolderPicker as object
[b]Dim TeilStrings() as string[/b]
Dim sNamen As String
Dim sPath as String
Dim i as long
Dim dummy()
oFolderPicker = createUnoService("com.sun.star.ui.dialogs.FolderPicker")
oFolderPicker.execute
sPath = ConvertFromUrl(oFolderPicker.directory & "/")
' msgbox sPath
Desktop = CreateUnoService ("com.sun.star.frame.Desktop")
Mappe = Desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, dummy())
Tabelle = Mappe.getSheets().getbyIndex(0)
Tabelle.getCellbyPosition(0,0).string = sPath
i = 1
sNamen = Dir(sPath , 0)
Do While sNamen <> ""
[b]sNamen = Left(sNamen, (Len(sNamen) - 4))[/b]
[b]TeilStrings() = Split(sNamen, "-")[/b]
Tabelle.getCellby[b]Position(1,i).string = Trim(TeilStrings(0))[/b]
Tabelle.getCellby[b]Position(2,i).string = Trim(TeilStrings(1))[/b]
i = i + 1
sNamen = Dir
Loop
End Sub
[b]Deutlicher Hinweis:[/b]
[b]Dieses Makro läuft jetzt nicht mehr für normale Verzeichnisse![/b]
Es läuft nur noch, wenn [b]ALLE[/b] Dateinamen im Verzeichnis Deinem Muster "Al Foul - 10 Bucks.mp3" entsprechen! Ein einziger anderer Dateiname und es hagelt Fehlermeldungen.
Genaugenommen müsste man noch eine Prüfung des Dateinamens "sNamen' einbauen.
Gruß
Ralf