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

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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
Zuletzt geändert von MikeRo am Fr, 30.03.2012 16:22, insgesamt 4-mal geändert.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

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

Beitrag von komma4 »

Was passiert denn, wenn Du die Vorlage als xlt speicherst?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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.
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag von Stephan »

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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

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

Beitrag von komma4 »

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)
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag von Stephan »

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
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag von Stephan »

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
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

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

Beitrag von MikeRo »

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. :)
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

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

Beitrag von Stephan »

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
Antworten