CALC: Zellbereich löschen, speichern

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

Moderator: Moderatoren

speednetz
*
Beiträge: 16
Registriert: Mo, 03.01.2011 21:01

CALC: Zellbereich löschen, speichern

Beitrag von speednetz »

Hallo
Kann mir vielleicht jemand helfen, bin im Makro schreiben noch nicht so fit.

Ich habe eine Tabelle mit Namen Maschine erstellt. In diese trage ich meine Werte von Montag bis Freitag ein.
Mein Makro was ich bis jetzt geschrieben habe speichert die Tabelle mit einem Namen in einer bestimmte Datei.
Das geht.
Ich möchte aber noch das er die Talelle Maschine wieder auf ruft und den Inhalt aus vor gegebenen bereichen löscht und sie dann schliest.
Somit ist die Tabelle dann am Montag sofort leer.

Ich hoffe es kann mir jemand bei dem Makro helfen.

Dank schon mal im vorraus

Speednetz


Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; doppelte Anfrage im (wieerum) falschen Unterforum gelöscht
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: CALC: Zellbereich löschen, speichern

Beitrag von komma4 »

Willkommen im Forum.

Wie @nikki Dir schon sagte: dies hier ist der Bereich für alle Fragen zur Programmierung in/von OpenOffice...

Ebenfalls möchte ich die Empfehlung von @nikki unterstützen: für den beschriebenen Arbeitsablauf bietet es sich an mit einer Dokumentvorlage zu arbeiten: richte die Vorlage so ein (Formatierungen!(, wie Du sie brauchst, erstelle dann Montags eine neue Datei, fülle sie mit Daten und speichere sie.

Ein Beispiel findest Du bei Dannenhöfer
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Zellbereich löschen, speichern

Beitrag von Stephan »

zunächst:
auch ich denke das nikki und komma4 mit der Dokumentvorlage recht haben
Ich hoffe es kann mir jemand bei dem Makro helfen.
nun ja, dazu fehlen genauere Infos. Da Du das Speichern eines Tabellendokuments per Makro ja schon selbst hinbekommen hast, geht es ja eigentlich nur um das Löschen von Zellbereichen und das ist in allgemeiner Darstellung nur eine Zeile Code, z.B.:

Code: Alles auswählen

 <ZellbereichsObjekt>.FormulaLocal = ""
was Dir ja kaum sehr viel weiterhelfen dürfte.


Gruß
Stephan
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Re: CALC: Zellbereich löschen, speichern

Beitrag von Toxitom »

das Löschen von Zellbereichen und das ist in allgemeiner Darstellung nur eine Zeile Code, z.B.:

Code: Alles auswählen

 <ZellbereichsObjekt>.FormulaLocal = ""
Einspruch! Das ist nicht das korrekte Vorgehen zum Löschen von Zellinhalten ;) Dazu gibt es schließlich eine eigene Methode:

Code: Alles auswählen

<ZellbereichsObjekt>.clearContents(flags)
VG Tom
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
speednetz
*
Beiträge: 16
Registriert: Mo, 03.01.2011 21:01

Re: CALC: Zellbereich löschen, speichern

Beitrag von speednetz »

Danke für eure Info

Das mit derDokumentvorlage ist nicht schlecht.
Aber ich muß bevor ich sie in den Ablageordner speichere ja jeden Tag meine Einträge machen.
ich möchte Tabelle aber nicht jedes mal aus dem Ablgeorner wieder auf rufen.

Vieleicht kann mir ja dabei jemand helfen.

Meine beiden Tabellen sehn im moment so aus.

Gruß Speednetz
Dateianhänge
neue Maschine.ods
(31.66 KiB) 142-mal heruntergeladen
alte Maschine.ods
(31.06 KiB) 111-mal heruntergeladen
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Zellbereich löschen, speichern

Beitrag von Stephan »

Einspruch! Das ist nicht das korrekte Vorgehen zum Löschen von Zellinhalten
berechtigter Einspruch, ich hatte sogar daran gedacht, nur ich hatte nicht die Konstanten (flags) im Kopf und war zu faul die rauszusuchen.

Gruß
Stephan
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Zellbereich löschen, speichern

Beitrag von Stephan »

In der Beispieldatei ist doch bereits eine Löschroutine die eigentlich funktioniert.

Meinethalben mach es so:

Code: Alles auswählen

dim oSheet as Object
Dim sPasswort as String
'die Aktive Tabelle
oSheet= ThisComponent.CurrentController.ActiveSheet
'oSheet= ThisComponent.Sheets.GetByName("Tabelle1") 'oder dit Tabelle mir Namme: "Tabelle1"
'oSheet= ThisComponent.Sheets.GetByIndex(0) 'Oder Die erste Tabelle
sPasswort="111"
'Schutz aufheben
oSheet.unprotect(sPasswort)
MsgBox "Schutz ist jetzt aufgehoben."

oSheet.getCellRangeByName("D5:H57").clearContents(7)

'Tabelle Schützen
  oSheet.protect(sPasswort)
  'Rückgängigmachen Verlauf Löschen,
  'damit man den Schutz nicht per Rückgängigmachen aufheben kann.
  ThisComponent.IsUndoEnabled =False 'Rückgängigmachen ausschalten
  ThisComponent.IsUndoEnabled =true  'Rückgängigmachen einschalten
MsgBox "Tabelle wurde geschützt"



Gruß
Stephan
speednetz
*
Beiträge: 16
Registriert: Mo, 03.01.2011 21:01

Re: CALC: Zellbereich löschen, speichern

Beitrag von speednetz »

Hallo Stephan

Das ist richtig

Ich möchte aber das die Löschroutine für dieTabelle neue Maschine gleich mit in dem Makro von dem Wochenspeicher enthalten ist.
Und danach soll die Tabelle geschlossen werden.

Wäre schön wenn du mir dabei helfen könntest.

Danke im Vorraus
Speednetz
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: CALC: Zellbereich löschen, speichern

Beitrag von Stephan »

Ich möchte aber das die Löschroutine für dieTabelle neue Maschine gleich mit in dem Makro von dem Wochenspeicher enthalten ist.
Und danach soll die Tabelle geschlossen werden.

Vielleicht bist Du Dir nur dr Möglichkeiten nicht bewusst, das man ein Makro innerhalb eines anderen Makros aufrufen kann?

Also z.B.:

Code: Alles auswählen

sub save
oDoc=thisComponent
Sheet = oDoc.Sheets(0)
Cell1 = Sheet.getCellByPosition(5, 00) '<= Das ist der erste Teil Bezug
Cell2 = Sheet.getCellByPosition(1, 00) '<= Das ist der zweite Teil Bezug
Cell3 = Sheet.getCellByPosition(2, 00) '<= Das ist der erste Teil Bezug
Cell4 = Sheet.getCellByPosition(8, 00) '<= Das ist der erste Teil Bezug
Filename = Cell1.String & " " & Cell2.String  & " " & Cell3.String & " - " & Cell4.String & "" 
Path = "file:///c:/Statistik/Wochenspeicher/"
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"

oDoc.storeasurl(Path & Filename & ".old",args1())

'das zweite Makro aufrufen:
loeschen()


With ThisComponent
 .store
 .close( FALSE )
End With

end sub

Sub loeschen()
dim oSheet as Object
Dim sPasswort as String
'die Aktive Tabelle
oSheet= ThisComponent.CurrentController.ActiveSheet
'oSheet= ThisComponent.Sheets.GetByName("Tabelle1") 'oder dit Tabelle mir Namme: "Tabelle1"
'oSheet= ThisComponent.Sheets.GetByIndex(0) 'Oder Die erste Tabelle
sPasswort="111"
'Schutz aufheben
oSheet.unprotect(sPasswort)
MsgBox "Schutz ist jetzt aufgehoben."

oSheet.getCellRangeByName("D5:H57").clearContents(7)

'Tabelle Schützen
  oSheet.protect(sPasswort)
  'Rückgängigmachen Verlauf Löschen,
  'damit man den Schutz nicht per Rückgängigmachen aufheben kann.
  ThisComponent.IsUndoEnabled =False 'Rückgängigmachen ausschalten
  ThisComponent.IsUndoEnabled =true  'Rückgängigmachen einschalten
MsgBox "Tabelle wurde geschützt"
End Sub

GRuß
Stephan
Antworten