Speichern per Button mit Zellwertern als Name

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Speichern per Button mit Zellwertern als Name

Beitrag von F3K Total »

Hi,
anbei ein Beispiel.
Es gibt zwei Knöpfe, "Ordner wählen" und "speichern", an jedem hängt ein Makro, was tut, was Du möchtest.

Gruß R
Dateianhänge
me.ods
(10.26 KiB) 50-mal heruntergeladen
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Speichern per Button mit Zellwertern als Name

Beitrag von balu »

Hallo me,

bitte lese und beachte doch diesen Beitrag von mir. Und wenn Du dann trotzdem nicht weiter kommst, weil Du noch nicht alles verstanden hast, kannst Du dich ruhig wieder melden.

Und bitte merk dir das Makrofragen generell hier in das Unterforum OOo Basic und Java gehören.

Und noch ein Tipp.
Bitte sorge doch dafür das wir auf eine Beispieldatei von dir zugreifen können, damit wir nicht erst mühsam deine Schilderung nachbauen müssen. Denn das macht einerseits nicht viel Spaß, und anderseits kann es auch zu missversatändnissen führen.



Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
F3K Total
********
Beiträge: 3723
Registriert: Mo, 28.02.2011 17:49

Re: Speichern per Button mit Zellwertern als Name

Beitrag von F3K Total »

balu hat geschrieben:Und bitte merk dir das Makrofragen generell hier in das Unterforum OOo Basic und Java gehören.

Und noch ein Tipp.
Bitte sorge doch dafür das wir auf eine Beispieldatei von dir zugreifen können, damit wir nicht erst mühsam deine Schilderung nachbauen müssen. Denn das macht einerseits nicht viel Spaß, und anderseits kann es auch zu missversatändnissen führen.
Jo, da hat balu völlig recht!
Ich habe da trotzdem mal was vorbereitet, du mußt allerdings einige Änderungen vornehmen:

1.) Die unten angehängten Makros ins Module1 kopieren, das "alte" s_save_document überschreiben.
2.) Das Module1 in SaveDocument umbenennen
3.) Im Entwurfsmodus:
  • dem Button mit der Aufschrift Ordner wählen den Namen cmdFolder geben
  • dem Button mit der Aufschrift speichern den Namen cmdSaveAs geben
4.) Den Buttons auf dem Reiter Ereignisse die Makros s_get_folder und s_save_document neu zuordnen, weil sich der Modulname geändert hat.

Wenn Du nun alles richtig gemacht hast, passiert Folgendes:
  • Das Dokument wird unter dem angegebenen Namen gespeichert.
  • Es wird nicht sichtbar erneut geladen.
  • Erst werden das Basic Modul SaveDocument und dann die Buttons gelöscht.
  • Das Dokument wird gespeichert.

Viel Erfolg, Gruß R

Code: Alles auswählen

sub s_save_document
osheet=Thiscomponent.currentcontroller.activesheet
ocellUrl=osheet.getcellrangebyname("H3")
scellUrl=ocellUrl.string
nsheet=ocellUrl.celladdress.sheet
scellTitel=replace(replace(osheet.getcellrangebyname("C3").string," ","_"),"/","_")
scellStart="_"+replace(osheet.getcellrangebyname("F3").string,".","")
scellEnde="_"+ replace(osheet.getcellrangebyname("G3").string,".","")

sUrl=scellUrl+scellTitel+scellStart+scellEnde+".ods"
thiscomponent.storetourl(sUrl,array())

S_delete_controls(sURL,nsheet)

msgbox "Die Datei '"+scellTitel+scellStart+scellEnde+".ods' wurde gespeichert"

end sub

sub s_delete_controls(sURL,nsheet)

Dim scontrolnames(1,1) as variant
Dim Args(1) as New com.sun.star.beans.PropertyValue
'hier die zu löschenden Elemente angeben:
scontrolnames(0,0)="cmdFolder"
scontrolnames(0,1)="cmdSaveAs"

Args(0).Name = "FilterName"
Args(0).Value ="scalc: Text - txt - csv (StarOffice Calc)"
Args(1).Name = "Hidden"
Args(1).Value = True

odoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Args())


'Makros entfernen
olibs = odoc.BasicLibraries
olibs.loadlibrary("Standard")
wait 100
olib = odoc.BasicLibraries.Standard
olib.removebyname("SaveDocument")
olibs.storeLibraries(true)

'Buttons entfernen
odoc.currentcontroller.setformdesignmode(true)
osheet= odoc.sheets(nsheet)
opage = osheet.drawpage
oforms = opage.forms
oform = oforms.Formular
for i=0 to oform.count -1
for k=0 to uBound(scontrolnames)
if oform(i).name = scontrolnames(0,k) then
scontrolnames(1,k)= true
endif
next k
next i

for k=0 to uBound(scontrolnames)
if scontrolnames(1,k)= true then
oform.removebyname(scontrolnames(0,k))
endif
next k
odoc.currentcontroller.setformdesignmode(false)

odoc.storeasurl(sUrl,array())
odoc.close -1

end sub
Antworten