🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Makro welches Verzeichnisse (keine Dateien) ausliest

Alles zur Programmierung im LibreOffice.
chrisrockkz
Beiträge: 7
Registriert: Mi 24. Feb 2021, 14:09

Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von chrisrockkz » Mi 24. Feb 2021, 15:14

Hallo liebe LibreOffice-Community,
ich bin gerade etwas am verzweifeln und finde leider nichts, was mir bei meinem Anliegen hilft.
Ich würde mir gerne ein Makro basteln, welches direkt beim Start ausgeführt wird und alle Verzeichnisse (keine Unterverzeichnisse) eines Verzeichnis in die Tabelle schreibt.
Ich bin leider nur auf den Code hier gestossen, welcher mir aber nur Dateien ausliest und in die Tabelle einfügt:

Code: Alles auswählen

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("Verzeichnisse")
	iSp = 0 : iZe = 0  'Startzele der Auflistung A5
	sPfad = ConvertToUrL("C:\Verzeichnis\")
	
	nextFile = dir(sPfad, 0)  'die erste Datei
	Do while nextFile <> ""
		oSheet.getCellByPosition(iSp, iZe).string = nextFile
		iZe = iZe + 1
		nextFile = Dir
	loop
	
End Sub
Dann finde ich nicht den richtigen Punkt um einzustellen, dass das Makro bei jedem Öffnen der Tabelle ausgeführt wird.
Sorry, ich bin leider ein blutiger Anfänger in der Materie.
Vielleicht könnt ihr mir helfen. Das wäre sehr toll.

Liebe Grüße

Helmut_S
* LO-Experte *
Beiträge: 756
Registriert: Di 9. Feb 2016, 19:27

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von Helmut_S » Mi 24. Feb 2021, 18:15

Hallo Chris... damit das Makro Verzeichnisse statt Dateien ausgibt, musst du den Paramter der Basic-Funktion "dir" von 0 auf 16 ändern - von:

Code: Alles auswählen

nextFile = dir(sPfad, 0)  'die erste Datei
nach

Code: Alles auswählen

nextFile = dir(sPfad, 16)  das erste Verzeichnis 
Diese Funktion ist auch in der LO-hilfe unter Basic beschrieben.
Damit das Makro bei jedem Öffnen dieser Datei startet, musst du es dem Tabellenereignis "Dokument öffnen" zuordnen.
Menue --> Extras --> Anpassen -->Ereignisse --> Dokument öffnen. --> dein Makro angeben.
MX-Linux KDE + Linux-Mint Cinnamon

Wanderer
* LO-Experte *
Beiträge: 909
Registriert: Di 11. Feb 2014, 20:03
Wohnort: Berlin

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von Wanderer » Mi 24. Feb 2021, 19:57

und hier noch die Lösung von Dannenhöfer, die allerdings noch rekursiv Unterverzeichnisse einsammelt:

http://www.dannenhoefer.de/faqstarbasic ... l#Zweig378

Mfg, Jörn
LO 6.0.7 (32Bit) Win8.1 Pro 32 Bit/ LO 6.3.2 Win10 64Bit / LO 6.0.7 Win7 Pro 64 Bit

chrisrockkz
Beiträge: 7
Registriert: Mi 24. Feb 2021, 14:09

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von chrisrockkz » Do 25. Feb 2021, 09:06

Helmut_S hat geschrieben:
Mi 24. Feb 2021, 18:15
Hallo Chris... damit das Makro Verzeichnisse statt Dateien ausgibt, musst du den Paramter der Basic-Funktion "dir" von 0 auf 16 ändern - von:

Code: Alles auswählen

nextFile = dir(sPfad, 0)  'die erste Datei
nach

Code: Alles auswählen

nextFile = dir(sPfad, 16)  das erste Verzeichnis 
Diese Funktion ist auch in der LO-hilfe unter Basic beschrieben.
Damit das Makro bei jedem Öffnen dieser Datei startet, musst du es dem Tabellenereignis "Dokument öffnen" zuordnen.
Menue --> Extras --> Anpassen -->Ereignisse --> Dokument öffnen. --> dein Makro angeben.
Hallo Helmut,

vielen Dank für deine Hilfe. Das Script funktioniert super. Was mir jedoch aufgefallen ist, es fügt neue Ordner hinzu, falls aber Ordner gelöscht werden, werden diese in der Tabelle nicht gelöscht. Hab ich da irgendwas noch vergessen?

Liebe Grüße
Chris

Helmut_S
* LO-Experte *
Beiträge: 756
Registriert: Di 9. Feb 2016, 19:27

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von Helmut_S » Do 25. Feb 2021, 12:18

Hallo Chris, du hast recht, das Makro liest einfach die vorhandenen Ordner ein, das wolltest du ja? Wenn du die Ordnerliste aktualisieren willst, könntest du einfach die vorhandene Liste z.B. in Spalte A löschen und das Makro über eine Schaltfläche in der Tabelle neu starten. Eine automatische Aktualisierung ließe sich wahrscheinlich auch einrichten, aber dazu müssen dir kompetentere Forumsmitglieder helfen.
Bitte vermeide künftig Vollzitate, das macht das Lesen der Beiträge sehr unübersichtlich.
Gruß Helmut
MX-Linux KDE + Linux-Mint Cinnamon

chrisrockkz
Beiträge: 7
Registriert: Mi 24. Feb 2021, 14:09

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von chrisrockkz » Do 25. Feb 2021, 14:09

Vielen Dank Helmut,

sorry, ich vermeide nun Zitate :)

Ich habe das Makro jetzt auf "Dokument öffnen" gesetzt, sodass dieses jedes Mal ausgeführt wird, wenn ich die Tabelle öffne. Jedoch wäre es sehr praktisch wenn gelöschte Ordner auch automatisch aus der Tabelle entfernt werden würden.

Liebe Grüße
Chris

nitja
Beiträge: 190
Registriert: Di 20. Okt 2020, 15:55

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von nitja » Do 25. Feb 2021, 15:04

hi Chris!
Wenn Du Dein CALC-"Dokument" hier als Anhang einfügst, könnte Dir vielleicht jemand das Makro da drin entsprechend ergänzen und die neue Version ebenfalls an die Antwort dazu anhängen.
LO 24.2.0.3 (X86_64) auf Linux 6.6.26-1-MANJARO, gnome 45.4, (gtk 4) gtk3 für LO

chrisrockkz
Beiträge: 7
Registriert: Mi 24. Feb 2021, 14:09

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von chrisrockkz » Do 25. Feb 2021, 16:08

Hi nitja,

danke für die Info, hier im Anhang die Datei.
Ordnerscript-Datensätze.ods
(21.19 KiB) 164-mal heruntergeladen
Liebe Grüße
Chris

Helmut_S
* LO-Experte *
Beiträge: 756
Registriert: Di 9. Feb 2016, 19:27

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von Helmut_S » Do 25. Feb 2021, 16:18

Hallo Chris, füge die folgende Zeile in dein Makro ein, dann wird die bestehende Liste bei jedem Start gelöscht.

ThisComponent.sheets(0).getCellRangeByName("A4:A100").clearcontents(4)
oSheet = ThisComponent.sheets.getByName("Verzeichnisse")

Mit sheets(0) ist die aktuelle Tabelle gemeint.
Diese Zeile löscht bei jedem Start des Makros von A5:A100 alle (aber nur)Textstrings vor dem Neu-Einlesen.
Falls du mehr Ordner hast, musst du A100 entsprechend ändern.

Bezgl. Löschen von Zellinhalten siehe dazu auch die Star-Basic FAQ von Michael Dannenhöfer
https://www.dannenhoefer.de/faqstarbasi ... leloeschen
Zitieren ist schon ok, aber bitte keine Voll-Zitate.
Gruß Helmut
MX-Linux KDE + Linux-Mint Cinnamon

chrisrockkz
Beiträge: 7
Registriert: Mi 24. Feb 2021, 14:09

Re: Makro welches Verzeichnisse (keine Dateien) ausliest

Beitrag von chrisrockkz » Do 25. Feb 2021, 16:38

Hallo Helmut,

danke, das scheint zu funktionieren. Meinst du das ist eine gute Lösung bei ca. 1500 Ordnern oder sollte man das dann eher anders lösen?

Liebe Grüße
Chris


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten