BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice 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 LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[GELÖST] Arbeitsblatt nur mit Werten und Formaten duplizieren

CALC ist die Tabellenkalkulation, die Sie immer wollten.
Ich Bins
Beiträge: 236
Registriert: Do 2. Aug 2018, 12:30

[GELÖST] Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 11:49

Hallo zusammen,

von einem Arbeitsblatt benötige ich ein Duplikat mit identischen Formaten und Werten aber ohne Verknüpfungen und Funktionen.
Mit nachfolgendem Code kann ich im ersten Schritt das Arbeitsblatt duplizieren und im zweiten Schritt im Duplikat den gesamten genutzten Bereich kopieren und wieder an gleicher Stelle einfügen.

Code: Alles auswählen

sub kopieren_einfuegen
 
	oDocument = ThisComponent
	oDocument.Sheets.CopyByName("Tabelle1","Tabelle2",1) 'Tabelle1 duplizieren

	'Inhalt der neuen Tabelle2 kopieren und nur deren Werte über die bestehenden Daten einfügen.
	oSheet = thisComponent.sheets(1) '2.Blatt
	ocursor = oSheet.createCursor()
	ocursor.gotoStart()	
	ocursor.gotoEndofUsedArea(false) 'letzte Zelle des Bereiches
	letzteSpalte = ocursor.getRangeAddress.endColumn  'index letzte Spalte des Bereichs
	letzteZeile = ocursor.getRangeAddress.endRow 'index letzte Zeile des Bereichs

	oQuelleRange=oSheet.getCellRangeByPosition(0,0,letzteSpalte,letzteZeile)
	oQuellRangeAddresse = oQuelleRange.getRangeAddress
	oZiel = oSheet.getCellByPosition(0,0)
	oZielCellAdresse=oZiel.getCellAddress
	oSheet.copyRange(oZielCellAdresse,oQuellRangeAddresse)
 end sub
Der zweite Schritt macht noch keinen Sinn weil ich noch keine Möglichkeit gefunden habe die bestehenden Inhalte nur mit den zuvor kopierten Werten zu überschreiben.

Bei Dannenhöfer konnte dazu nichts passendes finden.
Wie kann man nur die Werte der zuvor kopierten Daten einfügen, oder wie macht man es richtig mit viel weniger Code?

Viele Grüße
Ich Bins
Zuletzt geändert von Ich Bins am Fr 26. Nov 2021, 20:20, insgesamt 3-mal geändert.

Helmut_S
Beiträge: 692
Registriert: Di 9. Feb 2016, 19:27

Re: VBA: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Helmut_S » Mo 15. Nov 2021, 12:58

Hallo, eigentlich ist es mir peinlich dir meine Lösung vorzuschlagen, denn die ist so einfach, dass ich annehmen muss, ich habe alles falsch verstanden :oops:
Ich riskiere einfach mal die Blamage.
Also: markiere die gesamte Tabelle oder den bearbeiteten Bereich und kopiere diesen in die Zwischenablage mit der bei "Doktoranden" beliebten Tastenkombination "Strg+C" ;)
In der neuen Tabelle oder Datei fügst du diesen Inhalt mit der (standardmäßig eingestellten) Tastenkombination
Strg+Umschalten+V ein. Im aufpoppenden Dialog - siehe Screenshot - wählst du "Werte und Formatierungen"
und drückst mutig Enter.
Die in diesem Dialog vorgegebene und ziemlich selbsterklärenden Optionen kannst du natürlich nach Herzenslust ausprobieren.
Gruß Helmut
Dateianhänge
Screenshot_20211115_123633.png
Screenshot_20211115_123633.png (42.8 KiB) 1454 mal betrachtet
MX-Linux KDE + Linux-Mint Cinnamon

Mondblatt24
Beiträge: 2838
Registriert: Fr 3. Mär 2017, 17:12

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Mondblatt24 » Mo 15. Nov 2021, 13:08

Hallo,
was ist mit
Screenshot_ 2021-11-15 13 03 49.png
Screenshot_ 2021-11-15 13 03 49.png (13.58 KiB) 1453 mal betrachtet

Wenn die Tabelle kopiert ist, das gesamte Tabellenblatt markieren und über
Daten → Berechnen ► Formeln in Wert umwandeln, die Formeln entfernen.

Gruß
Peter
Zuletzt geändert von Mondblatt24 am Di 16. Nov 2021, 17:34, insgesamt 1-mal geändert.
Win 11 (x64) ▪ LO 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Mo 15. Nov 2021, 13:11

Hallo
VBA ist der Basic-dialekt der von M$ für Excel, Word etc. kreiert wurde.
Glücklicherweise benutzt du den aber gar nicht, sondern zeigst einigermassen sauberen StarBasic-code mit API-methoden.

Wenn du einfach nur ein Arbeitsblatt kopieren willst, dann tu das auch einfach:

Code: Alles auswählen

sub copySheet
doc = thisComponent
sheets = doc.Sheets
sheets.copyByName("Tabelle1", "CopyName", 0)
' 0 kopiert in die erste Position , … 'sheets.Count' ins letztes Tabellenblatt
end sub
wg. Verknüpfungen rauslöschen müsste ma erst mal klären, was für Verknüpfungen das sind!
Zuletzt geändert von karolus am Di 16. Nov 2021, 14:10, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 13:35

Hallo Helmut_S,

vielen Dank. Wie man das manuell erreichen kann ist mir bekannt.
Weil ich diese Vorgänge automatisieren möchte benötige ich Unterstützung in StarBasic.
Sinnvollerweise hätte ich meine Anfrage in " LibreOffice Programmierung" einkippen und nicht den Begriff "VBA" im Betreff verwenden sollen.

Viele Grüße
Ich Bins
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:30, insgesamt 1-mal geändert.

Ich Bins
Beiträge: 236
Registriert: Do 2. Aug 2018, 12:30

Re: VBA: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 13:42

Hallo Peter,

vielen Dank, aber ich möchte die Aktion automatisieren und hätte für meine Anfrage das Forum "LibreOffice Programmierung" und nicht den Begriff "VBA" im Betreff verwenden sollen.
Ist es Dir möglich meine Anfrage nach "LibreOffice Programmierung" zu verschieben?

Viele Grüße
Ich Bins

Ich Bins
Beiträge: 236
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 13:53

Hallo Karolus,

Sorry habe das falsche Forum und die falsche Begrifflichkeit "VBA" verwendet.
Mit meinen ersten beiden Code-Zeilen ist das Duplizieren ja bereits erledigt.
Vermutlich ist Deine Variante etwas "sauberer".

In meiner Calc-Datei befinden sich viele Blätter und ich muss einige davon an unterschiedlichen Positionen ohne Verknüpfungen duplizieren.
Die Verknüpfungen existieren nur zwischen den Blättern dieser Calc-Datei und sehen alle etwa so aus:
=$Tabellenname.B66

Viele Grüße
Ich Bins
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:30, insgesamt 1-mal geändert.

Mondblatt24
Beiträge: 2838
Registriert: Fr 3. Mär 2017, 17:12

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Mondblatt24 » Mo 15. Nov 2021, 14:00

Hallo Ich Bins,
Ich Bins hat geschrieben:
Mo 15. Nov 2021, 13:42
Ist es Dir möglich meine Anfrage nach "LibreOffice Programmierung" zu verschieben?
Nein, bin kein Moderator.

Gruß
Peter
Zuletzt geändert von Mondblatt24 am Do 18. Nov 2021, 07:40, insgesamt 1-mal geändert.
Win 11 (x64) ▪ LO 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

Benutzeravatar
karolus
Beiträge: 2170
Registriert: Fr 10. Dez 2010, 10:01

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von karolus » Mo 15. Nov 2021, 14:25

Hallo

Also gehts nur um die Formelverknüpfungen die ncht benötigt werden, am Stück:

Code: Alles auswählen

sub copySheet_withoutFormulas
    doc = thisComponent
    sheets = doc.Sheets
    sheets.copyByName("Tabelle1", "CopyName", 0)
    ' 0 kopiert in die erste Position , … 'sheets.Count' ins letztes Tabellenblatt
    sheet = sheets.getByName("CopyName")
    formula_query = sheet.queryContentCells(16)
    for each cellrange in formula_query
        cellrange.FormulaArray = cellrange.DataArray
    next
end sub
Die etwas "magische" 16 kommt aus https://api.libreoffice.org/docs/idl/re ... Flags.html
Zuletzt geändert von karolus am Di 16. Nov 2021, 14:11, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.3.2 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ich Bins
Beiträge: 236
Registriert: Do 2. Aug 2018, 12:30

Re: Arbeitsblatt nur mit Werten und Formaten duplizieren

Beitrag von Ich Bins » Mo 15. Nov 2021, 15:15

Hallo karolus,

genau das wars - vielen Dank!
Nur noch die Werte und die Formatierungen sind vorhanden. Keine Verknüpfungen und auch kein Summen-Funktionen sind auf den ersten Blick übrig geblieben. Damit kann ich jetzt gut weiterpfriemeln.
Jetzt sieht der Code so

Code: Alles auswählen

sub copySheet_withoutFormulas
    doc = thisComponent
    sheets = doc.Sheets
    copyName = "OriginalTabelle_"& Year(Date)-1
    sheets.copyByName("OriginalTabelle",CopyName,5)
    ' 0 kopiert in die erste Position , … 'sheets.Count' ins letztes Tabellenblatt
    sheet = sheets.getByName(CopyName)
    formula_query = sheet.queryContentCells(16)
    for each cellrange in formula_query
        cellrange.FormulaArray = cellrange.DataArray
    next
end sub
aus.

Viele Grüße
Ich Bins
Zuletzt geändert von Ich Bins am Mi 17. Nov 2021, 22:30, insgesamt 1-mal geändert.

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten