Seite 1 von 1
Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Di 17. Okt 2023, 15:56
von Statistiker
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
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Di 17. Okt 2023, 18:22
von karolus
Hallo
Meinst du dieInhalte der Dateien oder die Dateipfade?
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Di 17. Okt 2023, 18:56
von Statistiker
Ich meine die Inhalte, die Dateipfade lassen sich ja auf Systemebene oder mit dem Kommando-Zeilen "dir/b" auslesen.
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Di 31. Okt 2023, 15:24
von mikele
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 ...
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Di 31. Okt 2023, 16:10
von karolus
Das hatte ich vor kapp 14Tagen so ähnlich getestet, leider crasht LO nach relativ wenigen importierten Tabellen.
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Do 9. Nov 2023, 13:14
von Statistiker
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.
Re: Alle Dateien eines Ordners in ein Calc-Dokument einbinden
Verfasst: Do 9. Nov 2023, 17:07
von mikele
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).