Speichern im Hintergrund

Setup und Komponenten-übergreifende Probleme.

Moderator: Moderatoren

matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Speichern im Hintergrund

Beitrag von matlat »

Hallo,
ist folgendes Vorgehen in OO möglich?
Ich bearbeite eine Datei in ods oder odt und habe diese ständig geöffnet.
Zwischendurch muss ich in doc oder xls speichern,
möchte aber meine Ursprungsdatei in ods oder odt geöffnet behalten.
Ich möchte also ein ähnliches Verhalten wie beim pdf-Export.
Für Hilfe wäre ich sehr dankbar.
Vielen Dank schon mal
Wolfgang
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Hallo 'freedom',
danke für deine Unterstützung, aber sie hilft mir bei meiner Frage nicht weiter.
Ich versuche es noch einmal anders zu erklären:
Wenn ich odt geöffnet habe und dann in doc speichere, habe ich doc geöffnet.
Ich muss also erst doc schließen und dann odt wieder öffnen,
um am Ursprungsdokument weiterarbeiten zu können.
Das ist mir zu viel Gewechsel.
Den Vergleich mit pdf finde ich doch passend, weil ich in pdf speichern kann,
aber mein ursprüngliches odt weiter geöffnet bleibt.
Alos hoffe ich weiter auf eine Lösung
Wolfgang
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Speichern im Hintergrund

Beitrag von Stephan »

ist folgendes Vorgehen in OO möglich?
Ja, indem Du ein Makro verwendest und mittels storeToUrl als xls oder doc speicherst (siehe erster Post im Basic-Forum, dort StarBasic-FAQ)



Gruß
Stephan
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Danke auch Dir, Stefan
habe das Beispielmakro

Code: Alles auswählen

Sub Speichern
   dim dummy()
   datei="c:\test2.xls"
   dateiurl=converttourl(datei)
   odoc=thisComponent
   odoc.storeasurl(dateiurl,dummy())
End Sub
direkt mal ausprobiert und das Makro aus meiner ods heraus ausgeführt.
Das Ergebnis ist eine geöffnete xls,
ich möchte aber die Ursprungsdatei geöffnet behalten.
Hoffe also weiterhin
Wolfgang
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Speichern im Hintergrund

Beitrag von Stephan »

habe das Beispielmakro

Code: Alles auswählen
Sub Speichern
dim dummy()
datei="c:\test2.xls"
dateiurl=converttourl(datei)
odoc=thisComponent
odoc.storeasurl(dateiurl,dummy())
End Sub


direkt mal ausprobiert und das Makro aus meiner ods heraus ausgeführt.
Das Ergebnis ist eine geöffnete xls,
Ja, ich sprach ja auch nicht von storeasurl sondern von storeToUrl, was ich sogar fett markiert hatte.


Gruß
Stephan
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Danke,danke
Stephan, Du kannst eindeutig besser lesen als ich.
Lohnt es sich Folgendes weiter zu verfolgen, was ich dann im Basic-Forum machen würde:
Ich möchte beim Makro-Ausführen wählen können, unter welchem Namen und welchem Pfad ich speichere.
Nochmals vielen Dank
Wolfgang
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Speichern im Hintergrund

Beitrag von Stephan »

Lohnt es sich Folgendes weiter zu verfolgen
ja

Code: Alles auswählen

Sub Speichern() 
arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION) 
dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 
dialog.Initialize(arg()) 
dialog.appendFilter( "Excel (xls)", "*.xls")
dialog.SetMultiselectionMode(False)
ok = dialog.execute()
if ok = 1 Then   
	datei = dialog.getFiles() 
	URL = datei(0) 
	dim dummy()
   dateiurl=converttourl(URL)
   odoc=thisComponent
   odoc.storeTourl(dateiurl,dummy())
end if
End Sub
Was dann noch zu erweitern wäre, um z.B. automatische Typerkennung der gerade aktuellen Datei, etc., etc.


Gruß
Stephan
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Danke Stephan,
das sind ja große Aussichten, sich in Makros einzuarbeiten.
Jetzt bin ich aber erst mal zufrieden, dass ich dein Wissen anzapfen konnte,
um meinen Wunsch zu erfüllen.
Es funktioniert wie gewünscht.
Vielen Dank
Wolfgang
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Speichern im Hintergrund

Beitrag von Stephan »

hat jemand eine Idee, was der Grund sein könnte, dass es bei mir nicht geht?
Der von mir gepostete Code war nur sowas wie ein Kontrukt das das prinzipiell notwendige Vorgehen zeigt. Der Code dürfte so wie er dasteht überhaupt nicht funktionieren.
Passieren sollte das eine DAtei erzeugt wird die dem Ausgangstyp entspricht (also z.B. ods, sxw) und an die nur ein xls als Endung angehängt ist.


Gruß
Stephan
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Hallo Wolfgang
da hatte ich mich wohl zu früh gefreut und nur das technische Funktionieren beachtet.
Habe im Augenblick aber nicht genug Zeit, um weiter an der Lösung zu arbeiten.
Bis später
Wolfgang
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Speichern im Hintergrund

Beitrag von Stephan »

Ich könnte sowas im Writer sehr gut gebrauchen
das Folgende sollte gehen:

Code: Alles auswählen

Sub Speichern() 
odoc=thisComponent
If odoc.supportsService("com.sun.star.text.TextDocument") then
	arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION) 
	dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 
	dialog.Initialize(arg()) 
	dialog.appendFilter("Word (doc)", "*.doc")
	dialog.SetMultiselectionMode(False)
	ok = dialog.execute()
	if ok = 1 Then   
	   datei = dialog.getFiles() 
	   URL = datei(0) 
	   dim dummy(0) as New com.sun.star.beans.PropertyValue
	   dateiurl=converttourl(URL)
      dummy(0).Name = "FilterName"
      dummy(0).Value = "MS Word 97"
      odoc.storeTourl(dateiurl,dummy())
	end if
   Else
	  Msgbox "Das aktuele Dokument ist kein Textdokument"
   End If
End Sub


Gruß
Stephan
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Hallo Stephan
über diese für mich bequeme Lösung freue ich mich natürlich auch,
perfekt wäre es natürlich, wenn du mir auch noch xls 'schenken' würdest.
Ich kann zwar ahnen, welche Angaben ich im Makro ändern müsste,
aber die genaue Syntax habe ich überhaupt nicht parat.
Schon mal vielen Dank
Wolfgang
matlat
***
Beiträge: 87
Registriert: Sa, 03.03.2007 13:51

Re: Speichern im Hintergrund

Beitrag von matlat »

Ehe Stephan mir zuvorkommt, hier mein umgearbeitetes Makro, um xls im Hintergrund zu speichern.

Code: Alles auswählen

Sub Speichern_xls() 
odoc=thisComponent
If odoc.supportsService("com.sun.star.sheet.SpreadsheetDocument") then
   arg = Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION) 
   dialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker") 
   dialog.Initialize(arg()) 
   dialog.appendFilter("Excel (xls)", "*.xls")
   dialog.SetMultiselectionMode(False)
   ok = dialog.execute()
   if ok = 1 Then   
      datei = dialog.getFiles() 
      URL = datei(0) 
      dim dummy(0) as New com.sun.star.beans.PropertyValue
      dateiurl=converttourl(URL)
      dummy(0).Name = "FilterName"
      dummy(0).Value = "MS Excel 97"
      odoc.storeTourl(dateiurl,dummy())
   end if
   Else
     Msgbox "Das aktuelle Dokument ist kein Tabellendokument"
   End If
End Sub
Wolfgang
Antworten