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:

Code: Alles auswählen

AddFiltersToDialog(FilterNames(), oStoreDialog)
Im Beobachter sind allerdings beide belegt.

EDIT: Auch wenn ich die URL mit ConvertFromURL umwandle bleibt der Fehler.
Irgendeine Idee?