[Gelöst] OpenOffice Dokument mit MS Office öffnen

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: [Gelöst] OpenOffice Dokument mit MS Office öffnen

Re: [Gelöst] OpenOffice Dokument mit MS Office öffnen

von Stephan » Fr, 30.03.2012 19:37

Nun ja, solange es unter Windows funktioniert, ist es doch super
Wieso betonst Du Windows? Fürs 'Protokoll' stelle ich hier nur klar das sich mein Hinweis NICHT explizit auf 'Nicht-Windows' bezog, im Gegenteil würde er ja dort, da es keinen Scriptinghost gibt keinen Sinn machen. Mein Vorschlag macht also ohnhin nur für Windows Sinn, weil er unter Linux (u.A. Systemen) garnicht funktioniert.


Gruß
Stephan

Re: [Gelöst] OpenOffice Dokument mit MS Office öffnen

von MikeRo » Fr, 30.03.2012 16:20

Stephan hat geschrieben:
Hier der Finale QuellCode
So ist das Ganze von mir nicht vorgeschlagen worden und ich würde davon abraten es so zu benutzen weil CreateObject() nicht unter allen Umgebungen zuverlässig funktioniert.
AUSDRÜCKLICH hatte ich vorgeschlagen mittels StarBasic auf den Windows Scripting Host zuzugreifen und nicht etwa den, andeutungsweise skizzierten, Code direkt in das Basic einzubinden.


Gruß
Stephan
Nun ja, solange es unter Windows funktioniert, ist es doch super ;) Ich mein, sollte ich es irgendwann mal auf Linux etc. nutzen wollen, werde ich mich drum kümmern. :)

Re: [Gelöst] OpenOffice Dokument mit MS Office öffnen

von Stephan » Fr, 30.03.2012 15:04

Hier der Finale QuellCode
So ist das Ganze von mir nicht vorgeschlagen worden und ich würde davon abraten es so zu benutzen weil CreateObject() nicht unter allen Umgebungen zuverlässig funktioniert.
AUSDRÜCKLICH hatte ich vorgeschlagen mittels StarBasic auf den Windows Scripting Host zuzugreifen und nicht etwa den, andeutungsweise skizzierten, Code direkt in das Basic einzubinden.


Gruß
Stephan

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von MikeRo » Fr, 30.03.2012 14:52

Perfekt, das klappt wunderbar! =)

Hier der Finale QuellCode

Code: Alles auswählen

Sub AngeboteV2_DokumentSpeichern

dim arg(0) as new com.sun.star.beans.PropertyValue
arg(0).Name = "FilterName"
arg(0).Value = "MS Excel 97 Vorlage/Template"

Dim sURL as String
Dim sDateiName as String
sDateiName = "AngebotV2Temp.xls"
TempSpeicherPfad = ConvertToURL(environ("temp") & "/" & sDateiname
oDoc.storeToURL(TempSpeicherPfad, arg())

	Speicherpfad = environ("temp") & "/" & "AngebotV2Temp.xls"
	
	If FileExists("C:\Programme\Microsoft Office\Office14\EXCEL.EXE") Then 'Office 2010
	oDoc.close(True)
	Set oExcel = CreateObject("Excel.Application")
	oExcel.visible = true
	oExcel.Workbooks.Add(Speicherpfad)

   	'shell("C:\Programme\Microsoft Office\Office14\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	ElseIf FileExists("C:\Programme\Microsoft Office\Office12\EXCEL.EXE") Then 'Office 2007
   	oDoc.close(True)
	Set oExcel = CreateObject("Excel.Application")
	oExcel.visible = true
	oExcel.Workbooks.Add(Speicherpfad)
   	
   	'shell("C:\Programme\Microsoft Office\Office12\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	Else
	oDoc.getCurrentController.getFrame.getContainerWindow().setVisible(true) 'OpenOffice
	End If
	
End Sub

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von Stephan » Fr, 30.03.2012 14:44

Und Office schmeißt immer noch die Fehlermeldung raus, Datei falsch gespeichert.
Zwar kann ich diese Fehlermeldung, möglicherweise mangels der richtigen MS Office Version, nicht nachvollziehen, da ich aber auch nicht sehe das MS Excel per Kommandozeile (bzw. hier mittels 'Shell') einen Parameter kennen würde der es gestattete eine Dokumentvorlage in gewünschter WEise zu übergeben, würde ich mit dem WSH arbeiten und ihn per Starbasic stehen.

Wie das geht demonstriert mein zweiter Codeschnipsel in:
viewtopic.php?f=18&t=7932

und das zu nutzenden *.vbs dürfte ungefähr Folgendes sein:

Code: Alles auswählen

'Achtung VBS (Visual Basic Script)
Set oExcel = CreateObject("Excel.Application")
oExcel.visible = true
oExcel.Workbooks.Add("<Pfad + Name der Dokumentvorlagendatei")


Gruß
Stephan

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von MikeRo » Fr, 30.03.2012 13:32

Ich habe das Makro angepasst, Lediglich "EXCEL.EXE" zu benutzen funktioniert leider nicht, er findet die Datei nicht.

Und Office schmeißt immer noch die Fehlermeldung raus, Datei falsch gespeichert.

Hier der neue Code.

Code: Alles auswählen

Sub AngeboteV2_DokumentSpeichern

dim arg(0) as new com.sun.star.beans.PropertyValue
arg(0).Name = "FilterName"
arg(0).Value = "MS Excel 97 Vorlage/Template"

Dim sURL as String
Dim sDateiName as String
sDateiName = "AngebotV2Temp.xlt"
TempSpeicherPfad = ConvertToURL(environ("temp") & "/" & sDateiname
oDoc.storeToURL(TempSpeicherPfad, arg())

	Speicherpfad = environ("temp") & "/" & "AngebotV2Temp.xlt"
	
	If FileExists("C:\Programme\Microsoft Office\Office14\EXCEL.EXE") Then 'Office 2010
   	shell("C:\Programme\Microsoft Office\Office14\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	ElseIf FileExists("C:\Programme\Microsoft Office\Office12\EXCEL.EXE") Then 'Office 2007
   	shell("C:\Programme\Microsoft Office\Office12\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	Else
	shell("C:\Programme\OpenOffice.org 3\program\scalc.exe " & Speicherpfad) 
	End If

End Sub

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von komma4 » Fr, 30.03.2012 12:49

1. Speichere als xlt mit Filter MS Excel 97 Vorlage/Template
(verfügbare Filternamen aus: DannyB Posted: Tue Oct 28, 2003 7:49 pm http://www.oooforum.org/forum/viewtopic.phtml?t=3549 )


2. Windows findet den Pfad zu Excel schon, kürze Deinen shell Befehl um die Pfadangabe, als nur

Code: Alles auswählen

shell( "EXCEL.EXE " & Speicherpfad)

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von Stephan » Fr, 30.03.2012 12:43

Denn Gespeichert wird nicht in dem DateiFormat, welches im Dateinamen Definiert ist, sondern in dem Format, welches in den Propertys angegeben ist.
Ja eben und deshalb bat Dich ja Komma4 auch zu prüfen was passiert wenn Du die Vorlage al,s xlt SPEICHERST (und nicht als xls speicherst und nur als xlt benennst).
Wie fange ich den Fehler denn ab?
indem Du vor Aufruf mnit Shell prüfst ob die Datei existiert

Code: Alles auswählen

If FileExists("<irgend eine Datei>") Then
  Shell(<Anweisungen>)
End If
Gruß
Stephan

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von MikeRo » Fr, 30.03.2012 12:29

Und die Unterscheidung welche Office Version installiert ist, geht auch noch nicht, da kommt bei Office 2010 ein Fehler Datei nicht gefunden. Wie fange ich den Fehler denn ab? ohne, das der mir das Programm abbricht?

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von MikeRo » Fr, 30.03.2012 12:26

komma4 hat geschrieben:Was passiert denn, wenn Du die Vorlage als xlt speicherst?
Es kommt eine Fehlermeldung von Office, das ich versuche eine Datei zu öffnen, die im falschen Dateiformat gespeichert ist.
Denn Gespeichert wird nicht in dem DateiFormat, welches im Dateinamen Definiert ist, sondern in dem Format, welches in den Propertys angegeben ist.

Re: Mit Makros erstelltes Dokument anschließend mit Excel öf

von komma4 » Fr, 30.03.2012 12:22

Was passiert denn, wenn Du die Vorlage als xlt speicherst?

[Gelöst] OpenOffice Dokument mit MS Office öffnen

von MikeRo » Fr, 30.03.2012 12:13

Hallo, ich habe mir die Lösung des Problem fast erarbeitet. Das Einzige, was ich nicht hin bekomme ist, das Excel die erstellte Datei als Vorlage öffnet und nicht als "Gespeichertes Dokument".

Hier ist mein Quellcode um das erstellte Makro zu speichern und mit Excel 2010 zu öffnen.
Wobei oDoc an einer anderen stelle erstellt und bearbeitet wurde.

Code: Alles auswählen

Sub AngeboteV2_DokumentSpeichern

dim arg(0) as new com.sun.star.beans.PropertyValue
arg(0).Name = "FilterName"
arg(0).Value = "MS Excel 97"

Dim sURL as String
Dim sDateiName as String
sDateiName = "AngebotV2Temp.xls"
TempSpeicherPfad = ConvertToURL(environ("temp") & "/" & sDateiname
oDoc.storeToURL(TempSpeicherPfad, arg())
oDoc.close(True)
Speicherpfad = environ("temp") & "/" & "AngebotV2Temp.xls "
	On Error goTo Office2010
	shell("C:\Programme\Microsoft Office\Office12\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	Office2010:
	On Error GoTo OpenOffice
	shell("C:\Programme\Microsoft Office\Office14\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	OpenOffice:
	shell("C:\Programme\OpenOffice.org 3\program\scalc.exe " & Speicherpfad) 
End Sub
Geht es das er mir das Dokument in Excel als Vorlage öffnet, damit der Benutzer es neu Speichern MUSS.
Der Teil mit der Unterscheidung welche Office Version auf dem Rechner ist, geht auch noch nicht.

Hier die Lösung des Problems (Wird wohl auch mit Word oder PowerPoint funktionieren, wenn man es anpasst.
(Nur für Windows Systeme)

Code: Alles auswählen

Sub AngeboteV2_DokumentSpeichern

dim arg(0) as new com.sun.star.beans.PropertyValue
arg(0).Name = "FilterName"
arg(0).Value = "MS Excel 97 Vorlage/Template"

Dim sURL as String
Dim sDateiName as String
sDateiName = "AngebotV2Temp.xls"
TempSpeicherPfad = ConvertToURL(environ("temp") & "/" & sDateiname
oDoc.storeToURL(TempSpeicherPfad, arg())

	Speicherpfad = environ("temp") & "/" & "AngebotV2Temp.xls"
	
	If FileExists("C:\Programme\Microsoft Office\Office14\EXCEL.EXE") Then 'Office 2010
	oDoc.close(True)
	Set oExcel = CreateObject("Excel.Application")
	oExcel.visible = true
	oExcel.Workbooks.Add(Speicherpfad)

   	'shell("C:\Programme\Microsoft Office\Office14\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	ElseIf FileExists("C:\Programme\Microsoft Office\Office12\EXCEL.EXE") Then 'Office 2007
   	oDoc.close(True)
	Set oExcel = CreateObject("Excel.Application")
	oExcel.visible = true
	oExcel.Workbooks.Add(Speicherpfad)
   	
   	'shell("C:\Programme\Microsoft Office\Office12\EXCEL.EXE " & Speicherpfad) 
	Exit Sub
	Else
	oDoc.getCurrentController.getFrame.getContainerWindow().setVisible(true) 'OpenOffice
	End If
	
End Sub

Nach oben