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