BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice Forum zu erhalten!

DANKE >><< DANKE

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Alles zur Programmierung im OpenOffice.org
Antworten
LunaSolar
Beiträge: 5
Registriert: Mo 27. Aug 2018, 09:04

[Gelöst] markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Beitrag von LunaSolar » Mo 27. Aug 2018, 13:49

Hallo!

Ich bin leider bei der Lösung der Frage, wie ich einen markierten Bereich ohne Formatierung von einem Tabellenblatt auf das andere per Makro kopieren kann, auf Eure Hilfe angewiesen.

Der nachfolgende Code funktioniert bestens:

Code: Alles auswählen

Sub KopiereBereich

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(3)
oSheet2 = oDocument.Sheets(2)

Quellbereich = oDocument.getCurrentSelection()
Quelle = Quellbereich.getRangeAddress
   
Anfang = Quelle.Startrow
Ende = Quelle.Endrow

'Quellbereich festlegen
oQuelleRange=oSheet1.getCellRangeByPosition(0,Anfang,6,Ende)
oQuellRangeAddresse = oQuelleRange.getRangeAddress
oZiel = oSheet2.getCellByPosition(2,42)
oZielCellAdresse=oZiel.getCellAddress
oSheet2.copyRange(oZielCellAdresse,oQuellRangeAddresse)

End Sub
Auch dieser Code macht was er soll:

Code: Alles auswählen

Sub copyDataArray
oDocument = thisComponent
oSheet1 = thisComponent.Sheets(3)
oSheet2 = thisComponent.Sheets(2)

QuellArray = oSheet1.getCellRangeByPosition(0,2,6,2).getDataArray() 
oSheet2.getCellRangeByPosition(2,42,8,42).setDataArray(Quellarray )

End Sub
Nur möchte ich einen markierten Bereich von Tabellenblatt4 auf Tabellenblatt3 OHNE Formatierung kopieren. Kann mir hier bitte jemand helfen. Ich bekomme die Verbindung einfach nicht hin.

Ich bin für jede Hilfe dankbar!

Viele Grüße
Luna
Zuletzt geändert von LunaSolar am Mo 27. Aug 2018, 22:27, insgesamt 1-mal geändert.

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Beitrag von mikele » Mo 27. Aug 2018, 16:35

Hallo,
wenn der zu kopierende Bereich keine Formeln enthält, kannst du mit .setDataArray() arbeiten und du warst schon nahe 'dran:

Code: Alles auswählen

Sub KopiereBereich

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(3)

Quellbereich = oDocument.getCurrentSelection()
aDaten()=Quellbereich.getDataArray()
Quelle = Quellbereich.getRangeAddress
   
ZAnfang = Quelle.Startrow
ZEnde = Quelle.Endrow
SAnfang=Quelle.StartColumn
SEnde=Quelle.EndColumn

'Zielbereich festlegen, hier: beginnend ab der Zelle A1
'der Zielbereich muss dieselbe Größe haben, wie der Quellbereich
oZielRange=oSheet1.getCellRangeByPosition(0,0,SEnde-SAnfang,ZEnde-ZAnfang)
oZielRange.setDataArray(aDaten())
End Sub
Gruß,
mikele

LunaSolar
Beiträge: 5
Registriert: Mo 27. Aug 2018, 09:04

Re: markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Beitrag von LunaSolar » Mo 27. Aug 2018, 22:24

Hallo mikele,

ganz herzlichen Dank für den Code. Genau das was ich gesucht habe ...

Nach einer minimalen Anpassung meinerseits bezieht sich der Zielbereich jetzt auf Zelle C43 :D (gleiche Größe wie Quellbereich vorausgesetzt).

Nachfolgend noch einmal der Code:

Code: Alles auswählen

Sub KopiereBereich

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(1)

Quellbereich = oDocument.getCurrentSelection()
aDaten()=Quellbereich.getDataArray()
Quelle = Quellbereich.getRangeAddress
   
ZAnfang = Quelle.Startrow
ZEnde = Quelle.Endrow
SAnfang=Quelle.StartColumn
SEnde=Quelle.EndColumn

'Zielbereich festlegen, hier: beginnend ab der Zelle C43
'Der Zielbereich muss dieselbe Größe haben, wie der Quellbereich
oZielRange=oSheet1.getCellRangeByPosition(2,42,SEnde-SAnfang+2,ZEnde-ZAnfang+42) 
oZielRange.setDataArray(aDaten())

'Inhalte vom Quellbereich löschen
Quellbereich.clearcontents(5) 

End Sub
Nochmals vielen Dank für die Denkhilfe ;) .

Viele Grüße
Luna

mikele
Beiträge: 771
Registriert: Sa 23. Jul 2011, 22:09

Re: [Gelöst] markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Beitrag von mikele » Di 28. Aug 2018, 08:13

Hallo,
noch eine Ergänzung: Um die Größe des Zielbereichs zu bestimmen kann man auch (ist auch einfacher) die Dimensionen des DataArrays auslesen:

Code: Alles auswählen

Sub KopiereBereich

oDocument = ThisComponent
oSheet1 = oDocument.Sheets(1)

Quellbereich = oDocument.getCurrentSelection()
aDaten()=Quellbereich.getDataArray()
Quelle = Quellbereich.getRangeAddress
   
iZeilen = uBound(aDaten()) 'das DataArray besteht aus den Zeilen des Quellbereichs
iSpalten=uBound(aDaten(0)) 'die Spalten sind in jedem einzelnen Elementdes Arrays verpackt

'Zielbereich festlegen, hier: beginnend ab der Zelle C43
'Der Zielbereich muss dieselbe Größe haben, wie der Quellbereich
oZielRange=oSheet1.getCellRangeByPosition(2,42,2+iSpalten,42+iZeilen) 
oZielRange.setDataArray(aDaten())

'Inhalte vom Quellbereich löschen
Quellbereich.clearcontents(5) 

End Sub
Gruß,
mikele

LunaSolar
Beiträge: 5
Registriert: Mo 27. Aug 2018, 09:04

Re: [Gelöst] markierten Bereich zwischen Tabellenblättern ohne Formatierung kopieren

Beitrag von LunaSolar » Di 28. Aug 2018, 08:20

Hallo mikele,

das ist wirklich einfacher. Vielen Dank für die Optimierung :D .

Viele Grüße und einen schönen Tag
Luna

Antworten