Calc: Blatt kopieren, umbenennen

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

Moderator: Moderatoren

Jazzinger
Beiträge: 9
Registriert: Sa, 27.08.2011 22:43

Calc: Blatt kopieren, umbenennen

Beitrag von Jazzinger »

Ich habe ein Makro erstellt, das das aktuelle Tabellenblatt
- kopiert,
- ans Ende stellt,
- einen neuen Namen für das Blatt abfragt und dann
- den Blattschutz einschaltet.
Funktioniert bestens....
Sobald ich jedoch die Datei unter einem neuen Namen abspeichere, funktioniert es nicht mehr. Das Blatt wird nicht mehr kopiert, sondern nur noch umbenannt und dann geschützt.
Im Makro ist der Dateiname als eine Variable (?) gespeichert. Ich schicke das Makro mal mit.

Kann mir jemand den Kniff verraten, wie das Makro unabhängig vom Dateinamen das tut (siehe oben), was es soll?

Danke
Jazzinger

PS Hier ist das Listing des Makros:

Code: Alles auswählen

sub KollegInNeu
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "DocName"
args1(0).Value = "PersonalDaten neu"
args1(1).Name = "Index"
args1(1).Value = 32767
args1(2).Name = "Copy"
args1(2).Value = true

dispatcher.executeDispatch(document, ".uno:Move", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"

dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Protect"
args3(0).Value = true

dispatcher.executeDispatch(document, ".uno:Protect", "", 0, args3())


end sub
Moderation,4: CODE tags gesetzt; Betreff angepasst; Doppelposting im CALC Bereich gelöscht
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Calc: Blatt kopieren, umbenennen

Beitrag von komma4 »

Jazzinger hat geschrieben:Sobald ich jedoch die Datei unter einem neuen Namen abspeichere, funktioniert es nicht mehr.
Der erste Abschnitt (mit args1) funktioniert nicht wie gewünscht.
Das hat mit dem Ändern des Namens nichts zu tun...
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)
Tictac
**
Beiträge: 25
Registriert: Di, 12.01.2010 15:12

Re: Calc: Blatt kopieren, umbenennen

Beitrag von Tictac »

Ich würde dir empfehlen von der Verwendung des Makrorekorders wann immer möglich abzusehen, da stößt man meißt auf mehr Probleme als man damit löst.

Hier mal ein Codebeispiel das dein Problem weitesgehend lösen dürfte:

Code: Alles auswählen

sub kopieren
	Dim oSheet as Object
	ThisComponent.Sheets().copyByName("Ursprungsname","Neuer Name",ThisComponent.Sheets.Count()) 
	oSheet = ThisComponent.Sheets().getByName("Neuer Name")
	oSheet.Protect("Passwort")
end Sub
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Calc: Blatt kopieren, umbenennen

Beitrag von F3K Total »

Na,
vielleicht schaut der verehrte Ersteller dieses Threads mal in den ebenfalls von ihm erstellten Thread dem nahezu gleichen Thema, einige Zeilen tiefer in diesem Forum:
viewtopic.php?f=18&t=49998#p184393
Da hatte ich nämlich bereits geantwortet.

R
Jazzinger
Beiträge: 9
Registriert: Sa, 27.08.2011 22:43

Re: Calc: Blatt kopieren, umbenennen

Beitrag von Jazzinger »

Entschuldige bitte.
Ich hatte wohl an diesem Tag schon zuviel Anfragen gestartet, sodass ich diese letzte nicht mehr wiedergefunden habe.
Am nächsten Tag habe ich sie noch Mal gestellt, dann war sie aber wieder "verschwunden", weil ich im falschen Forum nachgefragt hatte. Deshalb habe ich sie ein drittel Mal losgeschickt. Dabei war meine zweite nur verschoben worden,

Die Ironie an der Sache ist, dass die Lösungsansätze aus dem Makro-Forum nicht funktioniert haben. Deiner hingegen schon. Vielen Dank!

Grüße
Jazzinger
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Calc: Blatt kopieren, umbenennen

Beitrag von F3K Total »

Jazzinger hat geschrieben:Die Ironie an der Sache ist, dass die Lösungsansätze aus dem Makro-Forum nicht funktioniert haben.
Hallo, meine Antwort habe ich im "OOo Basic und Java" - Forum gegeben.
Bitte gib Dir etwas mehr Mühe bei der Erstellung Deiner Threads.

Gruß R
Jazzinger
Beiträge: 9
Registriert: Sa, 27.08.2011 22:43

Re: Calc: Blatt kopieren, umbenennen

Beitrag von Jazzinger »

Hallo R,

ich habe Dein Makro installiert und es funktioniert, das hatte ich ja schon kund getan.
Es taucht jetzt allerdings ein weiteres Problem auf:
Das Tabellenblatt enthält ein Diagramm, das seine Daten aus dem Blatt bezieht (natürlich). Die Bezüge dazu werden absolut - also mit einem $ - hergestellt.
Wenn Dein Makro nun das Tabellenblatt kopiert und neu benennt, dann wird dieser Bezug nicht mit umbenannt. Das Diagramm bezieht also seine Daten weiterhin aus dem Ursprungsblatt.
Wie kann das geändert werden?

Danke und Grüße
Jazzinger
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Calc: Blatt kopieren, umbenennen

Beitrag von F3K Total »

Hallo Jazzinger,

das geht bestimmt auch per Makro, allein, Du mußt es schreiben.

Infos über Makros findest Du z.B. hier:
http://download.oracle.com/docs/cd/E195 ... index.html
oder hier
http://www.ooowiki.de/StarBasic
oder auch hier
http://www.starbasicfaq.de

Als Workaround:
1.) Doppelklick auf das Diagramm
2.) rechte Maustaste
3.) Datenbereiche-> hier die neue Tabelle eingeben.

Gruß R
Antworten