Daten aus anderer calc-Datei in die aktuelle übertragen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Woatze
**
Beiträge: 21
Registriert: Di, 19.01.2010 14:34

Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von Woatze »

Hallo!
Ich habe folgendes Problem:
Ich will aus einer anderen ods-Datei (C:\OOO\quelle.ods) einen bestimmten Bereich (A3:H50) aus dem Tabellenblatt Tabelle3 in die aktuelle ods-Datei einlesen. Diese Werte sollen in das Tabellenblatt Tabelle5 ab Zelle B10 eingelesen werden.
Ich hab schon was hier gefunden, wie man von einer Datei in eine andere was einliest. Aber nicht in die aktuelle Datei und eben auch nicht aus bzw. in ein bestimmtes Tabellenblatt.
Kann mir da jemand weiterhelfen?

Vielen Dank schon mal!
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von F3K Total »

Hallo,
anbei eine Calc Datei, die genau das macht.
Gruß R

Edit: Habe die Datei nochmal ausgetauscht, es gab eine Fehlermeldung wenn man keine Datei ausgewählt hatte.
Dateianhänge
Senke.ods
(10.45 KiB) 1875-mal heruntergeladen
Woatze
**
Beiträge: 21
Registriert: Di, 19.01.2010 14:34

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von Woatze »

Hallo R!
Hab's jetzt erst gesehen. Wahnsinn, das ging ja schnell. Vielen Dank für die Hilfe. Ist genau, was ich gebraucht hab.

Danke, Woatze
Woatze
**
Beiträge: 21
Registriert: Di, 19.01.2010 14:34

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von Woatze »

Zuerst mal: Funktioniert sehr gut, danke!
Jetzt hab ich noch eine kleine Erweiterung des ganzen:
Was muss man ändern, dass jetzt nach der Auswahl einer Datei nicht nur ein bestimmtes Blatt/Bereich kopiert wird sondern gleich mehrere Bereiche?
Z.B. soll aus der Quelle Tabelle2 der Bereich B10:B20 nach Ziel Tabelle 2 B10:B20 und gleichzeitig auch noch
Tabelle3, C10:C20 nach Tabelle3, C10:C20
Tabelle4, C10:C20 nach Tabelle4, C10:C20
Tabelle5, C10:C20 nach Tabelle5, C10:C20
Tabelle6, C10:C20 nach Tabelle6, C10:C20
Tabelle7, C10:C20 nach Tabelle7, C10:C20
kopiert werden.

Gäbe es da eine Abkürzung, da von Tabelle3 bis Tabelle7 der Bereich der gleiche ist?

Viele Grüße
Woatze
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von F3K Total »

Hallo,
ja geht, siehe Datei.
Habe im Makro getDatafromFile jetzt möglichst viel kommentiert (immer hinter dem Hochkomma '), alle weiteren Varianten solltest Du selbst zusammenbasteln können.

Gruß R

Code: Alles auswählen

Sub getDatafromFile

Dim FileProperties(2) As New com.sun.star.beans.PropertyValue

os_document=thiscomponent'Zieldokument

MyDialog=createunoservice("com.sun.star.ui.dialogs.FilePicker") 'Dialog zur Auswahl des Quelldokumentes erzeugen
MyDialog.appendFilter("Quelldatei","*.ods")
myDialog.displaydirectory="c:\"
if mydialog.execute= 0 then 'Dialog zur Auswahl des Quelldokumentes starten
exit sub
endif
Url_quelle=MyDialog.Files(0)'Dateipfad zur Quelldatei

'Ladeparameter Quelldatei vorgeben
FileProperties(0).Name = "FilterName"
FileProperties(0).Value ="scalc: Text - txt - csv (StarOffice Calc)"
FileProperties(1).Name = "USE_CONFIG"
FileProperties(1).Value ="3"
FileProperties(2).Name = "Hidden" 'versteckt
FileProperties(2).Value = True
oq_document = StarDesktop.loadComponentFromURL(Url_quelle, "_blank", 0, FileProperties())'Quelldokument versteckt laden

for i=1 to 6 'betroffene Tabellenblätter, per Index(-1) heißt Tabelle 2 bis 7
if i=1 then' Wenn Tabelle2
orange_string="B10:B20"
else'Sonst (Tabelle3 bis Tabelle7)
orange_string="C10:C20"
endif

oq_sheet=oq_document.sheets(i)'Quelltabelle
os_Sheet=os_document.sheets(i)'Zieltabelle

oq_range=oq_sheet.getCellRangeByName(orange_string)'Quellbereich festlegen
oq_array=oq_range.getDataArray()'Daten aus Quellbereich lesen
os_range=os_Sheet.getCellRangeByName(orange_string)'ZielBereich festlegen
os_range.setDataArray(oq_array)'Daten in Zielbereich schreiben
next i
oq_document.close (-1)'Quelldokument schließen

End Sub
Dateianhänge
Senke2.ods
(10.9 KiB) 640-mal heruntergeladen
Woatze
**
Beiträge: 21
Registriert: Di, 19.01.2010 14:34

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von Woatze »

Hallo R!
Vielen Dank noch für deine Hilfe. Funktioniert sehr gut!

Danke, Woatze
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von F3K Total »

... kaum wartet man 3 Wochen, zack, schon ist eine Antwort da ...
R
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Daten aus anderer calc-Datei in die aktuelle übertragen

Beitrag von F3K Total »

Elbwurm hat geschrieben:In Datei 1 ist der Januar das Arbeitsblatt 3 und in Datei 2 ist der Januar Arbeitsblatt 4

Wie kann ich es bewerkstelligen das Ich aus Datei 1 den Januar in Datei 2 kopieren kann?
Die Zellbereiche sind immer gleich, D7:J37
Das gilt für jeden Monat.

Ich möchte also die Zellbereiche D7:D37 von Januar bis Dezember aus Datei 1 in Datei 2 kopieren.
Ist soetwas irgendwie umsetzbar?
... wenn dann der Februar in Datei 1 auf Blatt 4 usw. liegt, hilft ein bisschen Nachdenken ...

Code: Alles auswählen

    Sub getDatafromFile

    Dim FileProperties(2) As New com.sun.star.beans.PropertyValue

    os_document=thiscomponent'Zieldokument

    MyDialog=createunoservice("com.sun.star.ui.dialogs.FilePicker") 'Dialog zur Auswahl des Quelldokumentes erzeugen
    MyDialog.appendFilter("Quelldatei","*.ods")
    myDialog.displaydirectory="c:\"
    if mydialog.execute= 0 then 'Dialog zur Auswahl des Quelldokumentes starten
    exit sub
    endif
    Url_quelle=MyDialog.Files(0)'Dateipfad zur Quelldatei

    'Ladeparameter Quelldatei vorgeben
    FileProperties(0).Name = "FilterName"
    FileProperties(0).Value ="scalc: Text - txt - csv (StarOffice Calc)"
    FileProperties(1).Name = "USE_CONFIG"
    FileProperties(1).Value ="3"
    FileProperties(2).Name = "Hidden" 'versteckt
    FileProperties(2).Value = True
    oq_document = StarDesktop.loadComponentFromURL(Url_quelle, "_blank", 0, FileProperties())'Quelldokument versteckt laden

    for i=2 to 13 'betroffene Tabellenblätter, per Index(-1) heißt Tabelle 3 bis 14
    orange_string="D7:D37"

    oq_sheet=oq_document.sheets(i)'Quelltabelle
    os_Sheet=os_document.sheets(i+1)'Zieltabelle'heißt Tabelle 4 (3+1) bis 15 (14+1)

    oq_range=oq_sheet.getCellRangeByName(orange_string)'Quellbereich festlegen
    oq_array=oq_range.getDataArray()'Daten aus Quellbereich lesen
    os_range=os_Sheet.getCellRangeByName(orange_string)'ZielBereich festlegen
    os_range.setDataArray(oq_array)'Daten in Zielbereich schreiben
    next i
    oq_document.close (-1)'Quelldokument schließen

    End Sub
geändert :
for i=2 to 13 'betroffene Tabellenblätter, per Index(-1) heißt Tabelle 3 bis 14
orange_string="D7:D37"

oq_sheet=oq_document.sheets(i)'Quelltabelle
os_Sheet=os_document.sheets(i+1)'Zieltabelle heißt Tabelle 4 (3+1) bis 15 (14+1)
Gruß und viel Erfolg R
Antworten