Dialog 'speichern unter' mit ausgewähltem dateityp

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Dialog 'speichern unter' mit ausgewähltem dateityp

Re: Dialog 'speichern unter' mit ausgewähltem dateityp

von lto » Mi, 10.11.2010 15:11

hallo axel,

vielen dank für deinen code, er funktioniert wunderbar. das mit dem mediadescriptor wäre mir nie aufgefallen. ist glaub ich langsam augenscheinlich, dass ich nicht aus der programmierer-ecke komme ;-)

danke nochmals, lg stefan

Re: Dialog 'speichern unter' mit ausgewähltem dateityp

von Axel Richter » Mo, 08.11.2010 16:40

Hallo,
lto hat geschrieben:

Code: Alles auswählen

Doc.storeToURL( sFileURL, Array() )
Du übergibst der Methode storeToURL ein leeres Array als Parameter MediaDescriptor. Siehe http://api.openoffice.org/docs/common/r ... storeToURL. Dort kannst Du einen bekannten FilterNamen übergeben. Voraussetzung ist allerdings, dass dieser Filtername wirklich korrekt und bekannt ist.

Bsp.:

Code: Alles auswählen

Sub Save_As_XML()

   Doc = ThisComponent

   'Starting FilePicker
   sFilePickerArgs = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION)
   oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" )
   With oFilePicker
      .Initialize ( sFilePickerArgs() )
      .SetDefaultName ("Testname")
      .AppendFilter( "DocBook File", "*.xml" )      
      .AppendFilter( "drei (.xml)", "*.xml" ) '"drei (.xml)" muss ein bekannter FilterName sein.
      .SetCurrentFilter( "DocBook File" )
      .SetValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_AUTOEXTENSION, 0, true)
   End With
   
    'Save Document
   If oFilePicker.execute() Then
      sFiles = oFilePicker.getFiles()
      sFileURL = sFiles(0)
      Dim oMediaDescriptor(0) as new com.sun.star.beans.PropertyValue
      oMediaDescriptor(0).Name = "FilterName"
      oMediaDescriptor(0).Value = oFilePicker.CurrentFilter  
      Doc.storeToURL( sFileURL, oMediaDescriptor() )
      MsgBox "Datei als " & oFilePicker.CurrentFilter & " gespeichert"
   Else
      MsgBox "Speicherung abgebrochen"
   End If
   
End Sub
Bei dem Beispiel habe ich außerdem das Template für den FilePicker abgeändert, denn Dein FILESAVE_SIMPLE hat gar keine CHECKBOX_AUTOEXTENSION.

viele Grüße

Axel

Dialog 'speichern unter' mit ausgewähltem dateityp

von lto » So, 07.11.2010 13:07

hallo,

ich arbeite gerade an einem makro, welches über einen button im writer-dokument aufgerufen wird.
bei klick sollte aus einer tabellenzelle der inhalt genommen werden und als dateiname im "speichern unter"-dialog eingetragen werden (funktioniert)
als weiteres lege ich den dateityp fest. hier wird ein eigenes format verwendet, welches als xml-filter eingerichtet ist (name: "drei" funktioniert auch [wenn manuell angewendet])

das problem ist, dass zwar alles eingestellt wird, jedoch wird die datei immer als openoffice-dokument abgespeichert und nicht der xml-filter angewendet und eine xml-datei erstellt

ich habe schon diverse versuche unternommen, jedoch ist bis jetzt keine erfolgreich gewesen.
danke im vorhinein für eure hilfe. lg

folgend der code:

Code: Alles auswählen

Sub Save_As_XML() 
	Dim Doc As Object
	Dim TextTables As Object
	Dim Table As Object
	Dim CellName

 'Getting Title of charter
	Doc = ThisComponent
	TextTables = Doc.getTextTables().getbyName("title")
   Table = TextTables()
   CellName = Table.getCellbyName("A1")
   Cellvalue = CellName.getString()
 
 	'Starting FilePicker
   sFilePickerArgs = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_SIMPLE ) 
   oFilePicker = CreateUnoService( "com.sun.star.ui.dialogs.FilePicker" ) 
   With oFilePicker 
      sDirectory = oFilePicker.getDisplayDirectory 
      .Initialize ( sFilePickerArgs() ) 
      .SetDisplayDirectory (sDirectory) 
      .SetDefaultName (Cellvalue + ".xml") 
      .AppendFilter( "All files (*.*)", "*.*" ) 
      .AppendFilter( "drei (.xml)", "*.xml" ) 
      .SetCurrentFilter( "drei (.xml)" ) 
      .SetValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_AUTOEXTENSION, 0, true)    
      .SetValue(com.sun.star.ui.dialogs.ExtendedFilePickerElementIds.CHECKBOX_PASSWORD, 0, false) 

   End With 
    
    'Save Document
   If oFilePicker.execute() Then 
      sFiles = oFilePicker.getFiles() 
      sFileURL = sFiles(0) 
      Doc.storeToURL( sFileURL, Array() ) 
      MsgBox "Datei als XML gespeichert"
	Else 
                  MsgBox "Speicherung abgebrochen"
   End If 
    
End Sub

Nach oben