🙏 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. 🤗

Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Alles zur Programmierung im LibreOffice.
Antworten
Statistiker
Beiträge: 29
Registriert: Mi 7. Okt 2020, 16:47
Wohnort: Westsachsen

Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von Statistiker » Di 17. Okt 2023, 15:56

Hallo Gemeinschaft,

als ich noch bei Excel war, gab es da ein Makro, das kopierte bei mir alle Dateien eines Ordners (Verzeichnisses) in eine neue Tabelle, jede Datei in ein Arbeitsblatt. Da ich immer noch sehr viel mit solchen Aufgaben zu tun habe, wäre es schön, wenn man so etwas auch in LibreOffice haben könnte, ich habe leider 0-Kenntnisse von Basic-Programmmierung. Die Calc-Dateien haben unterschiedliche Größe und sind auch unterschiedich aufgebaut und - es sind .odt UND .xls-Dateien.
Vorerst bin ich gespannt auf Eure freundliche Hilfe
Sta
Warum ist ein Kanaldeckel rund? Damit er nicht in den Kanal fallen kann..
LO 24.2.6.2 + Windows 11 Home 24H2

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von karolus » Di 17. Okt 2023, 18:22

Hallo
Meinst du dieInhalte der Dateien oder die Dateipfade?
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Statistiker
Beiträge: 29
Registriert: Mi 7. Okt 2020, 16:47
Wohnort: Westsachsen

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von Statistiker » Di 17. Okt 2023, 18:56

Ich meine die Inhalte, die Dateipfade lassen sich ja auf Systemebene oder mit dem Kommando-Zeilen "dir/b" auslesen.
Warum ist ein Kanaldeckel rund? Damit er nicht in den Kanal fallen kann..
LO 24.2.6.2 + Windows 11 Home 24H2

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von mikele » Di 31. Okt 2023, 15:24

Hallo,
prinzipiell sollte das folgende Makro deine Wünsche erfüllen:

Code: Alles auswählen

Sub Main
	'neues Dokument erzeugen, dass alle Tabellen aufnehmen soll
	Dim mArgs()
	oDocument = StarDesktop.loadComponentFromURL ("private:factory/scalc","_blank", 0, mArgs)
	'Verzeichnis auslesen
	sFolder="c:\test" 'welches Verzeichnis soll zusammengefasst werden
	sFolderUrl = ConvertToUrl(sFolder)
	oSimpleFileAccess = createUnoService( "com.sun.star.ucb.SimpleFileAccess" )
	aDateien = oSimpleFileAccess.getFolderContents( sFolderUrl,false )
	'Durchlauf durch alle Dateien
	For i = 0 To UBound( aDateien )
		'wenn .ods oder .xls dann Durchlauf durch alle Tabellen
		if right(aDateien(i),3)="ods" or right(aDateien(i),3)="xls" then 
			'öffnen der Datei, könnte auch im Hintergrund geschehen
			oQuelle=StarDesktop.loadComponentFromURL (adateien(i),"_blank", 0, mArgs)
			for k=0 to oQuelle.Sheets.Count-1
				oDocument.Sheets.importSheet(oQuelle, oQuelle.Sheets(k).name,oDocument.Sheets.Count)
			next
			oQuelle.Close(true)
		end if
	next i      
	'Dateiname und Pfad der neuen Datei festlegen
	aVerzeichnis=split(sFolderUrl,"/")
	aVerzeichnis(ubound(aVerzeichnis))="zusammenfassung.odt"
	sDatei_neu=join(aVerzeichnis,"/")
	'Speichern
	oDocument.storeAsUrl( convertToUrl(sDatei_neu), mArgs)
	'Schließen
	oDocument.Close(true)

End Sub
Ob das Ganze sinnvoll ist, hängt natürlich von den Dateien ab ...
Gruß,
mikele

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von karolus » Di 31. Okt 2023, 16:10

Das hatte ich vor kapp 14Tagen so ähnlich getestet, leider crasht LO nach relativ wenigen importierten Tabellen.
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Statistiker
Beiträge: 29
Registriert: Mi 7. Okt 2020, 16:47
Wohnort: Westsachsen

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von Statistiker » Do 9. Nov 2023, 13:14

Hallo mikele,
mit Verspätung möchte ich antworten. Sorry.
Danke für deine Mühe, aber das Makro tut nix, nur ein neue Datei namens "Zusammenfassung.odt" in dem gewählten Ordner (Verzeichnis) erstellen, die aber offensichtlich das Excel-XLS-Format hat. Ich benutze LO Version 7.6.2.1 - also die letzte.
Warum ist ein Kanaldeckel rund? Damit er nicht in den Kanal fallen kann..
LO 24.2.6.2 + Windows 11 Home 24H2

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden

Beitrag von mikele » Do 9. Nov 2023, 17:07

Hallo,
wenn die Datei in dem Verzeichnis erstellt wird, dann in der Zeile

Code: Alles auswählen

	sFolder="c:\test" 'welches Verzeichnis soll zusammengefasst werden
das Verzeichnis ohne \ am Ende eingeben.
In der namensgebenden Zeile

Code: Alles auswählen

	aVerzeichnis(ubound(aVerzeichnis))="zusammenfassung.odt"
muss es natürlich

Code: Alles auswählen

	aVerzeichnis(ubound(aVerzeichnis))="zusammenfassung.ods"
es ist aber (so oder so) eine Calc-Datei (getestet mit LO 7.3.7).
Gruß,
mikele


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