Zellen Inhalte

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Bembel
*
Beiträge: 14
Registriert: Fr, 01.10.2004 08:14
Wohnort: Breidenbach

Zellen Inhalte

Beitrag von Bembel »

Hi ihr OOo user ich brauch eure Kentnisse
Ich habe ein Makro: Zellen Inhalte Löschen aufgezeichnet .

sub Loeschen
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$C$14:$D$44;K14:P44"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "SVDN"
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, args2())
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$G$54"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
dim args11(0) as new com.sun.star.beans.PropertyValue
args11(0).Name = "StringName"
args11(0).Value = "Daten am Monats Ende speichern !!!"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args11())
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
End Sub
Beim Ausführen bekomme die Fehlermeldung " Ungültiger Bereich ".
Liegt wohl an : args1(0).Value = "$C$14:$D$44;K14:P44".
Im Bereich E14:H44 sind Formel, die nicht gelöscht werden sollen.

Viele Grüße
Hartmut
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Re: Zellen Inhalte

Beitrag von Hömmelmann »

Hallo Hartmut,

mit dem folgenden Code müsstest du schon alles erschlagen können:

oDocument = ThisComponent
oSheet1 = oDocument.Sheets.getByIndex(0)
'Löschen Bereich C14 - D44
oQuelleRange=oSheet1.getCellRangeByPosition(2,13,4,43)
oQuellRangeAdresse = oQuelleRange.getRangeAddress
oSheet1.removeRange( oQuellRangeAdresse, com.sun.star.sheet.CellDeleteMode.UP)
'Löschen Bereich K14 - P44
oQuelleRange=oSheet1.getCellRangeByPosition(10,13,15,43)
oQuellRangeAdresse = oQuelleRange.getRangeAddress
oSheet1.removeRange( oQuellRangeAdresse, com.sun.star.sheet.CellDeleteMode.UP)
'Text in G54 einstellen
oSheet1.getcellrangebyname("G54").string = "Daten am Monats Ende speichern !!!"

Gruß, Friedhelm
Bembel
*
Beiträge: 14
Registriert: Fr, 01.10.2004 08:14
Wohnort: Breidenbach

Re: Zellen Inhalte

Beitrag von Bembel »

Hallo Friedhelm

vielen Dank für deine Unterstützung!
Ja, es geht damit . Leider werden auch Formate gelöscht.es sollten aber nur die Werte in den Zellen gelöscht werden.
Sorry : Meine Schuld hätte vorher darauf hinweisen sollen .

Viele Grüße
Hartmut
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: Zellen Inhalte

Beitrag von Toxitom »

Hey Hartmut,

Zellen - und Zellbereiche - unterstützen das Interface com.sun.star.sheet.XSheetOperation und dort die Methode ClearContents(Flags). Das entspricht dem "Entf"-Button im UI.
Mit dem Flags wiederum übergibst du einen Integer-Wert für das, was gelöscht werden soll: die Werte können addiert werden ;-)

Wert - wird gelöscht
1 Werte
2 Zeit + Datumswerte
4 Texte
8 Notizen
16 Formeln
32 "Harte" Formatierungen
64 zugewiesene Zellvorlagen etc
128 Objekte
256 Formatierungen von Teilbereichen des Inhaltes

Das heissst, um "nur" die Werte (Zahlen) aus deinem Zellbereich zu löschen, nutze einfahc das:

Code: Alles auswählen

...
thisComponent.sheets(0).getCellRangeByName("C14:P44").clearContent(1+2)
...
Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bembel
*
Beiträge: 14
Registriert: Fr, 01.10.2004 08:14
Wohnort: Breidenbach

Re: Zellen Inhalte

Beitrag von Bembel »

Hallo Thomas
Danke für deine Antwort so sollte es sein.
Problem abgeschlossen !

Gruß
Hartmut
Antworten