Calc: Tabelle kopieren

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

Moderator: Moderatoren

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

Calc: Tabelle kopieren

Beitrag von Jazzinger »

Ich habe ein Makro erstellt,
- welches das aktive Tabellenblatt kopiert,
- ans Ende stellt,
- einen neuen Namen abfragt und
- den Tabellenschutz einschaltet.
Das funktioniert bestens.

Allerdings enthält das Makro den Namen der Datei. Das hat zur Folge, dass ich die Datei nicht einfach unter einem neuen Namen abspeichern kann. Ich habe vor die entsprechenden Zeilen schon mal ein "rem" geschrieben, hat leider nichts gebracht.

Wie muss das Makro aussehen, dass es unabhängig vom Dateinamen seine Arbeit macht?

Danke
Jazzinger

PS. Das ist das Listing des vorhanden 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: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; CODE tags gesetzt
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Calc: Tabelle kopieren

Beitrag von F3K Total »

Hallo,
habe ein "nicht aufgenommenes" Makro dazu geschrieben, ist auch kürzer:

Code: Alles auswählen

sub copy_sheet_and_protect

odoc=ThisComponent
osheets=odoc.sheets
ocount=osheets.Count
oActiveSheet=odoc.currentController.ActiveSheet
oNewSheetName= inputbox ("neuer Name: ","aktuelle Tabelle kopieren", "Tabelle")
oNewPassword= inputbox ("Passwort: ","Tabellenschutz", "Tabelle")
osheets.copyByName( oActiveSheet.Name, oNewSheetName, ocount )
oNewSheet=osheets(ocount)
oNewSheet.protect(oNewPassword)
msgbox ("Tabelle '"+oNewSheetName+"' angelegt und geschützt"

end sub
Viel Erfolg damit.
Gruß R
Antworten