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