CALC: Zellbereich löschen, speichern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: CALC: Zellbereich löschen, speichern

Re: CALC: Zellbereich löschen, speichern

von Stephan » Sa, 17.09.2016 10:08

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

Re: CALC: Zellbereich löschen, speichern

von speednetz » Fr, 16.09.2016 12:10

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

Re: CALC: Zellbereich löschen, speichern

von Stephan » Fr, 16.09.2016 10:56

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

Re: CALC: Zellbereich löschen, speichern

von Stephan » Fr, 16.09.2016 10:44

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

Re: CALC: Zellbereich löschen, speichern

von speednetz » Fr, 16.09.2016 09:57

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) 189-mal heruntergeladen
alte Maschine.ods
(31.06 KiB) 154-mal heruntergeladen

Re: CALC: Zellbereich löschen, speichern

von Toxitom » Fr, 16.09.2016 09:54

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

Re: CALC: Zellbereich löschen, speichern

von Stephan » Do, 15.09.2016 21:31

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

Re: CALC: Zellbereich löschen, speichern

von komma4 » Do, 15.09.2016 20:09

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

CALC: Zellbereich löschen, speichern

von speednetz » Do, 15.09.2016 19:52

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

Nach oben