Seite 1 von 1
Formular Dateiauswahl zum Speichern
Verfasst: Do, 23.05.2013 01:30
von Luke78
Hallo zusammen
Ich bin gerade dabei meine Reports benutzerfreundlicher zu gestalten.
Im Hintergrund erstellen und als Excel oder PDF speichern funktioniert auch tadellos.
Allerding wollte ich es ermöglichen, dass Zielpfad und Dateiname vom Benutzer bestimmt werden können.
Leider scheint es, dass BASE in Formularen nur ein Bedienelement zum öffnen von Dateien zur Verfügung stellt.
Ich könnte da zwar existierende Dateien auswählen, den Pfad auslesen und überschreiben, aber das ist dann doch nicht ganz das gewollte.
Schön wäre es einen Dateidialog zu bekommen der wie bei einem klassischen "Speichern unter" funktioniert.
Re: Formular Dateiauswahl zum Speichern
Verfasst: Do, 23.05.2013 06:13
von F3K Total
Hi, dies geht z.B.
Code: Alles auswählen
Sub S_Save_as
dim document as object
dim dispatcher as object
Dim aProps(0) as new com.sun.star.beans.PropertyValue
aProps(0).Name = "Hidden"
aProps(0).Value = true
oCalcDoc = StarDesktop.loadComponentFromURL("private:factory/scalc","_blank", 0, aProps)
osheet = oCalcdoc.sheets(0)
ocell = osheet.getcellbyposition(0,0)
ocell.string = "Na, dat klappt doch!"
oFrame = oCalcDoc.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(oFrame, ".uno:SaveAs", "", 0, Array())
oCalcDoc.close -1
end Sub
Gruß R
Re: Formular Dateiauswahl zum Speichern
Verfasst: Do, 23.05.2013 09:31
von Luke78
Oh manchmal steht man echt auf dem Schlauch, den uno.Service SaveAs hatte ich eh schon benutzt.
Hatte dem nur Pfad un Filter mitgegeben um das ganze als Excel speichern zu können.
Wenn ich den Pfad raus nehme läuft es auch, allerdings ignoriert er dann den Filter.
Gibt es eine Möglichkeit die Dateitypauswahl vorauszuwählen?
Bei mir sieht der entsprechende Abschnitt aktuell so aus:
Code: Alles auswählen
dim pArg(1) as new com.sun.star.beans.PropertyValue
pArg(0).Name = "FilterName"
pArg(0).Value = "MS Excel 97"
oDispatcher.executeDispatch( oFrame, ".uno:SaveAs", "", 0, pArg())
Re: Formular Dateiauswahl zum Speichern
Verfasst: Do, 23.05.2013 17:07
von komma4
Sieh' Dir doch mal die Funktion StoreDocument in der Bibliothek Tools Deiner Standard-Installation an.
Wird zwar nicht mit UNO gearbeitet - funktioniert aber gut (auch mit Filter)
Re: Formular Dateiauswahl zum Speichern
Verfasst: Do, 23.05.2013 19:32
von Luke78
Danke für den Tip, leider bekomm ich es aber nicht ans Laufen.
Folgender Aufruf:
Code: Alles auswählen
sPath = replace( oDocument.URL, oDocument.Title, "")
Tools.ModuleControls.storeDocument( oDocument, Array("MS Excel 97"), ReportName, sPath)
In StoreDocument taucht dann an folgender Stelle der Fehler "Objektvariable nicht belegt" auf:
Im Beobachter sind allerdings beide belegt.
EDIT: Auch wenn ich die URL mit ConvertFromURL umwandle bleibt der Fehler.
Irgendeine Idee?