Mein Projekt, die Schüler unserer Schule im Rechnen weiterzubringen ist schon recht weit gediehen. (Siehe: "Alle Dateien eines Ordners per Makro einlesen" und "Tabellen mit Formatierung übertragen"). Die Schüler unserer Schule müssen (bald alle) jede Woche eine Calc Datei als Wochenaufgabe abgeben. Um die Ergebnisse schneller auswerten zu können soll eine Seite ("Übersicht") aus jeder Schülerdatei ("Rechentrainer_sname.ods") einer Lerngruppe in eine zentrale Datei eingefügt werden. Nach meinen Versuchen stellte sich heraus, dass die Formatierung der "Übersicht"seite nur erhalten bleibt, wenn ich die ganze Seite der einen Datei kopiere und dann in die zentrale Datei einfüge. - Einfügen klappt, Kopieren klappt - aber nicht das Kopieren der Seite aus der einen Datei (InDoc -> InSheets -> InTab) in die andere Datei (oDatei -> oSheets -> oTab). Ich habe das mit dem Befehl "oSheets.copyByName(InTab,sname,oSheets.getcount()-1)" versucht, erhalte aber die Meldung "Falscher Wert für Eigenschaft". Ich habe die Befürchtung, dass man zwischen zwei Dateien keine Tabellenblätter kopieren kann - wer weiss was?
Dank für Hilfe von Pit
Code: Alles auswählen
dim oDoc, oSheets, oTab, InDoc, InSheets, InTab as object
dim vorname, nachname, sname as string
dim Anzahl as integer
dim aDateien() as string
dim arg()
sub einfuegen
If ( Not GlobalScope.BasicLibraries.isLibraryLoaded( "Tools" ) ) Then
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
End If
oDoc=ThisComponent 'Das zentrale Daokument
oSheets=oDoc.getSheets(0)
aDateien = ReadDirectories("f:\Rechentrainer\Hausaufgaben\Mathe_7" , TRUE , FALSE , FALSE ) 'Das Verzeichnis mit den Schülerdateien
If uBound( aDateien ) > -1 then
Anzahl = uBound( aDateien ) + 1
for i = lBound( aDateien ) to uBound( aDateien )
InDoc=StarDesktop.loadComponentFromURL(aDateien(i), "_blank", 0, Arg()) 'Öffnen der Schülerdateien
InTab=InDoc.sheets.getByName("Übersicht") 'Die einzufügende Seite aus den Schülerdateien
nachname=InDoc.sheets.getByName("Daten").getCellByPosition(1,1).string
vorname=InDoc.sheets.getByName("Daten").getCellByPosition(2,1).string
sname=nachname & "_" & vorname 'Der Schülername als Seitenname
oSheets.copyByName(InTab,sname,oSheets.getcount()-1) 'Dieser Befehl klappt nicht
InDoc.close(true) 'Schließen der Schülerdateien
next i
end if
end sub