Seite 1 von 1
Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: So, 01.02.2009 17:18
von achimgr
Hallo an alle,
bitte, wie kann ich einen Bereich in einem Tabellenblatt kopieren und einfügen, ohne das ich von meinem derzeit aktivierten Tabellenblatt wechsel?
Bsp: ich bin in Blatt "Eingabe". Im Blatt "Kunden" werden die Eingaben von "Eingabe" in Zeile 2 angezeigt. Nun möchte ich vom Blatt "Eingabe" aus die Zeile 2 in "Kunden" kopieren und in Zeile 3 ohne Formeln einfügen. Wenn ich das mit dem Rekorder aufnehme, wechsel ich zwangsläufig in "Kunden" und am Ende wieder zurück. Ich möchte aber, dass das passiert ohne das die Tabellenblätter wechseln.
Danke für die Hilfe
PS: Praktisch wäre es, wenn die Kundeneingabe in "Eingaben" gleich und automatisch in eine Datenbank geschrieben würden, aber ich kenne mich in basic nicht aus, sodass ich diesen Umweg nehme.
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: So, 01.02.2009 22:17
von Karolus
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mo, 02.02.2009 16:43
von achimgr
Hallo Karo,
vielen dank für den link.
leider verstehe ich es nicht. ich sehe nicht, wie und wo ich meine aufnahme (per makrorecorder) abändern muss:
DIES sehe ich bei meiner Aufnahme:
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 2
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Nr"
args4(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args4())
Ich möchte zB NICHT"jump to table"
kannst du mir da helfen? oder gerne andere?
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mo, 02.02.2009 21:11
von Karolus
Hallo
Den aufgezeichneten Code kannst du komplett löschen.
folgendes kopiert den Bereich A3:K3 aus dem Blatt "kunden" in den Bereich A2:K2 im Blatt "Eingabe"
Code: Alles auswählen
sub bereich_kopieren
oDocument = ThisComponent
oQuellblatt = oDocument.Sheets().getByName("kunden")
oZielblatt = oDocument.Sheets().getByName("Eingabe")
' Quellbereich festlegen
oQuelleRange = oQuellblatt.getCellRangeByName("A3:K3")
oQuellRangeAddresse = oQuelleRange.getRangeAddress
oZiel = oZielblatt.getCellByPosition(0,1) 'einfügen ab A2
oZielCellAdresse=oZiel.getCellAddress
oZielblatt.copyRange(oZielCellAdresse,oQuellRangeAddresse)
end sub
Gruß Karo
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mo, 02.02.2009 22:55
von achimgr
hallo karo,
ja das ist ja perfekt! vielen dank.
das sieht schon lange nicht mehr so kompliziert aus, wie mein aufgezeichneter code.
kann ich mich ja vielleicht doch mal reinarbeiten.
Nur eines bitte noch:
wie muss es heissen, das dass einfügen OHNE formeln passiert?
Danke im voraus.
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mo, 02.02.2009 23:26
von achimgr
NACHTRAG:
und es soll eingefügt werden (zeilen nach unten schieben)
im moment überschreibt er/es immer wieder.
danke nochmal
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mi, 04.02.2009 16:19
von achimgr
hallo??
Nur eines bitte noch:
wie muss es heissen, das dass einfügen OHNE formeln passiert?
und es soll eingefügt werden (zeilen nach unten schieben)
im moment überschreibt er/es immer wieder.
Danke euch
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mi, 04.02.2009 17:45
von Karolus
Hallo
Code: Alles auswählen
sub Datenbereich_kopieren_Zeileeinfuegen
oDocument = ThisComponent
oQuellblatt = oDocument.Sheets().getByName("kunden")
oZielblatt = oDocument.Sheets().getByName("Eingabe")
orows = ozielblatt.getrows()
orows.insertbyindex(1,1)'Zeile2 wird eingefügt
adaten = oQuellblatt.getCellRangeByName("A3:K3").getDataarray()
'Achtung Quell- und Zielbereich müssen identisch dimensioniert sein
oZielblatt.getCellrangeByName("A2:K2").setdataarray(adaten) 'einfügen in A2:K2
end sub
Gruß Karo
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mi, 04.02.2009 19:03
von achimgr
coooool - vielen dank karolus.
warum heißt es: a daten oder auch o zielblatt?
was bedeutet a + o? kann man das kurz erklären?
Re: Zeile in ANDERER Tabelle kopieren ohne diese aufzurufen
Verfasst: Mi, 04.02.2009 19:28
von Karolus
Hallo Achim
Eigentlich kann man diese Namen beliebig definieren, solange man keine der innerhalb von Basic reservierten Bezeichnungen nimmt.
Es sollte aber ein "sprechender" Name sein.
Die verschiedenen vorangestellten Buchstaben erleichtern später bei komplexem Code die Übersicht darüber was Objekt, was Array, string(Text); usw. ist.
Gruß Karo