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
Zellen Inhalte
Moderator: Moderatoren
-
- ****
- Beiträge: 119
- Registriert: Di, 28.11.2006 19:44
- Wohnort: Meppen
Re: Zellen Inhalte
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
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
Re: Zellen Inhalte
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
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
Re: Zellen Inhalte
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:
Viele Grüße
Thomas
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)
...
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Re: Zellen Inhalte
Hallo Thomas
Danke für deine Antwort so sollte es sein.
Problem abgeschlossen !
Gruß
Hartmut
Danke für deine Antwort so sollte es sein.
Problem abgeschlossen !
Gruß
Hartmut