Seite 1 von 2
Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Mi 24. Feb 2021, 15:14
von chrisrockkz
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Mi 24. Feb 2021, 18:15
von Helmut_S
Hallo Chris... damit das Makro Verzeichnisse statt Dateien ausgibt, musst du den Paramter der Basic-Funktion "dir" von 0 auf 16 ändern - von:
nach
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.
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Mi 24. Feb 2021, 19:57
von Wanderer
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 09:06
von chrisrockkz
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:
nach
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 12:18
von Helmut_S
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 14:09
von chrisrockkz
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 15:04
von nitja
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.
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 16:08
von chrisrockkz
Hi nitja,
danke für die Info, hier im Anhang die Datei.
Liebe Grüße
Chris
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 16:18
von Helmut_S
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
Re: Makro welches Verzeichnisse (keine Dateien) ausliest
Verfasst: Do 25. Feb 2021, 16:38
von chrisrockkz
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