Seite 1 von 1
Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Fr, 29.07.2011 16:59
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!
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Fr, 29.07.2011 18:44
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.
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Mo, 01.08.2011 13:54
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
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Mo, 01.08.2011 17:05
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
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Mo, 01.08.2011 17:57
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
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Do, 18.08.2011 15:34
von Woatze
Hallo R!
Vielen Dank noch für deine Hilfe. Funktioniert sehr gut!
Danke, Woatze
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Do, 18.08.2011 21:06
von F3K Total
... kaum wartet man 3 Wochen, zack, schon ist eine Antwort da ...
R
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Mi, 10.10.2012 10:50
von Stephan
Re: Daten aus anderer calc-Datei in die aktuelle übertragen
Verfasst: Fr, 12.10.2012 06:29
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 Nach
denken ...
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