Seite 1 von 1
Ordnerverzeichnis in Calc einlesen
Verfasst: Sa 8. Aug 2020, 20:56
von franz10
Hallo,
kann ich Ordnerverzeichnisse auslesen und die Dateinamen in Calc einfügen?
Ich würde gerne eine Tabelle mit meiner mp3-Sammlung anlegen.
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: So 9. Aug 2020, 00:54
von Wanderer
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: So 9. Aug 2020, 10:17
von Pit Zyclade
Interessante Quelle! Muß man wohl unter Makros einfügen.
Leider gibt es außer einem nebulösen Hinweis, dass z =0 zu setzen sei (wann? im Makro oder bei der Anwendung oder?), keine Anleitung für die Nutzung.
So ist es für mich (gut, ich bin kein Maßstab, alle anderen mögen klüger sein) nicht nutzbar, obwohl der Verfasser sich große Mühe für "alle" gegeben hat.
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: So 9. Aug 2020, 11:03
von RPP63
Ich bin auch kein Maßstab, weil ich mit dem ähnlichen VBA (Excel) unterwegs bin.
Dennoch ein paar Anmerkungen:
Die Function gibt einen Integer zurück,
also eine Zahl!
Heißt, sie zählt Dateien und listet sie nicht auf, wie vom TE gewünscht.
Wenn der Übergabeparameter z korrekt als Integer (oder auch Long) deklariert wäre, bräuchte man ihn nicht erst zu setzen, sondern ein "leerer" Integer ist ohnehin 0.
Unter VBA würde man diesen Parameter gar nicht erst übergeben (für was soll das gut sein?) , sondern innerhalb der Function dimensionieren.
Zum eigentlichen Thema:
Unter Windows (Excel) geht so etwas mit dem "Scripting.FileSystemObject"
Für LibreOffice habe ich folgendes gefunden:
viewtopic.php?t=16361
Gruß Ralf
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: So 9. Aug 2020, 11:56
von franz10
Besten Dank für die schnellen Antworten. Ich werde versuchen es richtig anzuwenden.
Nochmals Dankeschön.
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: So 9. Aug 2020, 12:39
von Wanderer
Hallo Pit, hallo Ralf,
da ich nichts über die Vorkenntnisse des TE Franz weiss, habe ich erstmal nur den Link gesetzt. Er kann ja nachfragen.
Ich nutze für ähnlich gelagerte Fälle ein Mini-Script im jeweiligen Verzeichnis, das mir die Dateinamen in eine Text/CSV Datei schreibt und importiere diese dann nach Calc. Ist aber eben keine Lösung IN Office.
Das Marco bekommt 3 Parameter übergeben,
eine leere Liste, den Parameter z der die bisherige Anzahl von Elementen der Liste zählt und den Namen des Verzeichnisses.
Es lässt sich vom System die Liste der enthaltenen Dateinamen geben und durchläuft diese mit eine FOR-Schleife.
Dateinamen werden in die Übergebene Liste eingetragen und z erhöht.
Unterverzeichnisse werden per Rekursion (Selbstaufruf) gescannt.
Als Rückgabewert der Funktion dient der Endwert von z, also die Anzahl der Dateien, die eingetragen wurden.
"Nebenbei" wurde aber auch die übergebene Liste gefüllt und enthält jetzt z Dateinamen (Anhänger Funktionaler Sprachen sind in BASIC falsch, in Lisp würde man natürlich die Liste zurückgeben, aber "früher" waren komplexe Rückgabewerte nicht möglich)
Abgesehen vom OO-Service, der die Dateien liefert sollte das auch unter VBA gehen
Mfg, Jörn
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: Mo 10. Aug 2020, 21:45
von Helmut_S
Hallo Franz10, ich habe etwas gegockelt und ein Makro in einem Thread aus dem Jahr 2007 gefunden. Verfasst hat das Makro LO-Guru und Autor einiger lesenswerter Bücher über LO, Toxitom.
Hier der Link zu der Seite:
http://de.openoffice.info/viewtopic.php?t=11212
Habe dir das Makro mit einem Kommentar zum leichteren Verständnis versehen. Den Pfad zu deinem Musikstücke-Ordner musst du natürlich anpassen. Hier zu deiner Bequemlichkeit der Basic Code:
Code: Alles auswählen
REM ***** BASIC *****
REM listet alle Dateien eines Verezeichnisses in einem
REM Calc-Sheet auf
Sub Dateien_auflisten
dim sPfad as string
dim oSheet as Object
dim iSp as integer, iZe as Long
oSheet = thisComponent.sheets.getByName("Tabelle1")
iSp = 0 : iZe = 4 'Startzele der Auflistung A5
sPfad = ConvertToUrL("/home/helmut/Musik/*.mp3")'der Pfad zum gewünschten Ordner in Linux- oder Mac-Schreibweise
' kann man auch in Windows Schreibweise eingeben, da die Funktion
' ConverToUrl() den Pfad nach dem verwendeten umwandelt (nicht getestet!)
' für mp3 Dateien muss die Dateiendung entsprechend angepasst werden /*.mp3
nextFile = dir(sPfad, 0) 'die erste Datei
Do while nextFile <> ""
oSheet.getCellByPosition(iSp, iZe).string = nextFile
iZe = iZe + 1
nextFile = Dir
loop
End Sub
Für evtl. weitere Anpassungen hoffe ich, dass sich die kompetenteren User wie HeritzP, F3K oder andere melden.
Gruß Helmut
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: Di 18. Aug 2020, 11:19
von Pit Zyclade
Das klappt zwar (entsprechend dem ursprünglichen Wunsch), aber windows-Nutzer würden da die diversen Optionen von dir bevorzugen.
Denn wenn man nur die Dateien erhält und die Unterverzeichnisse links liegen lassen muß, bin ich selbst nicht von der Nützlichkeit zu überzeugen.
Wünschenswert wäre entweder in calc oder in base die vollständige Listung.
In calc beispielsweise jedes Unterverzeichnis in eine weitere Spalte oder gar Tabelle, wobei Spalte vermutlich für ein nachfolgende Überführung nach base zweckmäßiger wäre, weil man dann nur eine Tabelle überführen muß.
Re: Ordnerverzeichnis in Calc einlesen
Verfasst: Fr 28. Aug 2020, 21:24
von wolf_lupo
Habe das mit einer Ein-Zeilen-Batch-Datei in Windows(*.bat) gelöst.
Untenstehend 2 Versionen; kopiere diese in das gewünschte Verzeichnis und rufe die *bat auf;
jede dieser Bat generiert eine Textdatei, welche die Ordner-/Unterordner-Inhalte beinhaltet.
Per 'Copy & Paste' ins Calc oder Writer Dokument einfügen
Batch 1: dir /a / s /o:gn /b > "_druck.txt"
Batch 2: dir /a / s /o:gn > "_druck2.txt"
Kopiere die jeweilige Zeile per Texteditior in eine *.bat Datei