von F3K Total » So, 15.01.2012 11:18
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
[quote="balu"]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.[/quote]
[b]Jo, da hat balu völlig recht![/b]
Ich habe da trotzdem mal was vorbereitet, du mußt allerdings einige Änderungen vornehmen:
1.) Die unten angehängten Makros ins [color=#0040FF]Module1[/color] kopieren, das "alte" [color=#0040FF]s_save_document[/color] überschreiben.
2.) Das [color=#0040FF]Module1[/color] in [color=#0040FF]SaveDocument[/color] umbenennen
3.) Im Entwurfsmodus:
[list][*]dem Button mit der Aufschrift [color=#0040FF]Ordner wählen[/color] den Namen [color=#0040FF]cmdFolder[/color] geben[*]dem Button mit der Aufschrift [color=#0040FF]speichern[/color] den Namen [color=#0040FF]cmdSaveAs[/color] geben[/list]4.) Den Buttons auf dem Reiter Ereignisse die Makros [color=#0040FF]s_get_folder[/color] und [color=#0040FF]s_save_document[/color] neu zuordnen, weil sich der Modulname geändert hat.
Wenn Du nun alles richtig gemacht hast, passiert Folgendes:
[list][*]Das Dokument wird unter dem angegebenen Namen gespeichert.
[*]Es wird nicht sichtbar erneut geladen.
[*]Erst werden das Basic Modul [color=#0040FF]SaveDocument[/color] und dann die Buttons gelöscht.
[*]Das Dokument wird gespeichert.[/list]
Viel Erfolg, Gruß R
[code]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[/code]