Auswahl des Dateiformates anhand der MS Word/Excel Version

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Auswahl des Dateiformates anhand der MS Word/Excel Version

Beitragvon Patrick.Zi » Mo, 18. Nov 2013 14:53

Hallo zusammen

Wie der Titel schon sagt, bin ich auf der Suche nach einer Möglichkeit, automatisch den Dateityp beim speichern von Word oder Excel Dokumenten zu auswählen zu lassen. Natürlich habe ich auch schon über google gesucht und mich hier im Forum ein wenig umgeschaut. Zurzeit würde mein Code wie folgt aussehen, jedoch wäre mir eine automatische Auswahl lieber.

Code: Alles auswählen
LOCAL cTyp
LOCAL oApp := CreateObject( "WORD.APPLICATION" )

IF oApp # NIL
   IF val(oApp:version()) >= 12
      cTyp := ".DOCX"
   ELSE
      cTyp := ".DOC"
   ENDIF
    oApp:documents:add()
   usw...


Danke schonmal im vorraus.
LG Patrick
Danke schonmal im Vorraus und Gruß
Patrick
Patrick.Zi
Rookie
Rookie
 
Beiträge: 5
Registriert: Mo, 18. Nov 2013 14:40

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon brandelh » Mo, 18. Nov 2013 15:22

Falls du meinst, dass du das beim Speichern vorgibst, das geht so ...

Excel:
Code: Alles auswählen
oBook:SaveAs("Mein.XLS" , xlWorkbookNormal )
oBook:SaveAs("Mein.XLSX" , xlOpenXMLWorkbook )


Mit Word müsste das ähnlich gehen, einfach den Macrorecorder starten, speichern unter ... ausführen und das BVA-Makro ansehen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon Patrick.Zi » Mo, 18. Nov 2013 15:33

brandelh hat geschrieben:Falls du meinst, dass du das beim Speichern vorgibst, das geht so ...

Excel:
Code: Alles auswählen
oBook:SaveAs("Mein.XLS" , xlWorkbookNormal )
oBook:SaveAs("Mein.XLSX" , xlOpenXMLWorkbook )


Mit Word müsste das ähnlich gehen, einfach den Macrorecorder starten, speichern unter ... ausführen und das BVA-Makro ansehen.


Ich meinte eher, dass Word selber die passende Dateiendung wählt, je nachdem welche Version installiert ist, da ja zum Beispiel alle Versionen unter MS Word 2007 kein .docx format unterstützen. Demnach soll er selbstständig im .doc Format speichern wenn eine Version unter der 2007er installiert ist und automatisch .docx gespeichert werden, sobald die Version 2007 und höher installiert ist.

Gruß Patrick
Danke schonmal im Vorraus und Gruß
Patrick
Patrick.Zi
Rookie
Rookie
 
Beiträge: 5
Registriert: Mo, 18. Nov 2013 14:40

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon georg » Mo, 18. Nov 2013 15:46

Hallo, Patrick -


noch nicht versucht, aber was passiert, wenn Du die Erweiterung weglässt und es dem jeweiligen Programm überlässt, das entsprechende Format zu wählen?

Also etwa

Code: Alles auswählen
cDoc := "c:\Benutzer\Xbase-User\Dokumente\MeinDokument" // ohne "." am Ende!
oDoc:saveAs(cDoc)
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1819
Registriert: Fr, 08. Feb 2008 22:29

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon Patrick.Zi » Mo, 18. Nov 2013 17:13

georg hat geschrieben:Hallo, Patrick -


noch nicht versucht, aber was passiert, wenn Du die Erweiterung weglässt und es dem jeweiligen Programm überlässt, das entsprechende Format zu wählen?

Also etwa

Code: Alles auswählen
cDoc := "c:\Benutzer\Xbase-User\Dokumente\MeinDokument" // ohne "." am Ende!
oDoc:saveAs(cDoc)


Habe es gerade einmal probiert und er macht nichts. Er bricht die Laufzeit einfach beim safe() ab und speichert auch keine Datei. Es scheint als würde er es zumindest bei mir wie ein "RETURN self" sehen, da das Programm von mir auch nicht mit einem Fehler abstürzt sondern normal weiterläuft.

Wenn ich vorher eine Tempfile ohne Dateiendung erstelle und diese dann per Word abspeichere macht er es zwar, jedoch hat sie dann auch nach dem Speichern keinen neuen Dateityp.
Danke schonmal im Vorraus und Gruß
Patrick
Patrick.Zi
Rookie
Rookie
 
Beiträge: 5
Registriert: Mo, 18. Nov 2013 14:40

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon brandelh » Di, 19. Nov 2013 7:57

Patrick.Zi hat geschrieben:
brandelh hat geschrieben:Ich meinte eher, dass Word selber die passende Dateiendung wählt, je nachdem welche Version installiert ist, da ja zum Beispiel alle Versionen unter MS Word 2007 kein .docx format unterstützen. Demnach soll er selbstständig im .doc Format speichern wenn eine Version unter der 2007er installiert ist und automatisch .docx gespeichert werden, sobald die Version 2007 und höher installiert ist.


ich fürchte, dass dies nicht funktioniert. Beim Excel Beispiel steht über dem Dateinamen:
Code: Alles auswählen
  // Das Workbook wird mit einem neuen Namen abgespeichert.
  // Ein voll qualifizierter Pfad muss angegeben werden.
  // xlWorkbookNormal erzeugt eine normale Excel-Datei.
  oBook:SaveAs( cTDir+"\MyExcel.xls" , xlWorkbookNormal ) // xlWorkbookNormal  =>  .XLS

Damit die Automatik funktionieren könnte, müsste Excel / Word damit klar kommen einen Dateinamen ohne Dateiendung und ohne TypKonstante bzw. mit einer wie xlWorkbookAuto zu arbeiten.
Meine Versuche waren in dieser Hinsicht nicht erfolgreich. Warum also nicht nach der abgefragten Version die nötigen Infos auswählen ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13388
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon Tom » Di, 19. Nov 2013 13:30

Warum also nicht nach der abgefragten Version die nötigen Infos auswählen ?


Ich halte das auch für den sinnvollsten Weg. Zumal es noch einige andere versionsabhängige Eigenarten gibt - so muss beispielsweise die iVar "DisplayAlerts" bis einschließlich Version 10 (was auch immer das ist) mit 0 oder 1 besetzt werden, während spätere Versionen .T. oder .F. akzeptieren. Jedenfalls nach meiner Erfahrung.

Alternativ könnte man einfach für alle Versionen ".DOCX" wählen. Gut möglich, dass ältere Word-Versionen (ich besitze leider keine und kann's nicht ausprobieren) daraus schlicht .DOC machen. Es gibt aber auch einige Konstanten als Parameter für die SaveAs-Methode (einfach mal ins MSDN schauen), darunter solche, die die Verwendung des jeweils aktuellen Formats vorschreiben. Denkbar, dass Word automatisch auf einen anderen Wert zurückfällt, wenn man einen noch nicht unterstützten verwendet. Denkbar aber auch, dass es dann zu einem Fehler kommt.

Was spricht dagegen, die Version abzufragen? Okay, man müsste das für zukünftige Versionen jeweils aktualisieren, aber dieser Aufwand wäre akzeptabel.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6708
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon Patrick.Zi » Di, 19. Nov 2013 18:12

Habe es jetzt auch über die oWord:version() Methode und IF-Abfrage gelöst. Falls jemandem noch etwas dazu einfällt kann derjenige es posten.
Danke schonmal im Vorraus und Gruß
Patrick
Patrick.Zi
Rookie
Rookie
 
Beiträge: 5
Registriert: Mo, 18. Nov 2013 14:40

Re: Auswahl des Dateiformates anhand der MS Word/Excel Versi

Beitragvon georg » Di, 19. Nov 2013 21:08

Hallo, Patrick -


als Gedankenanstoss:

Wenn Du von AutomationObject eine eigene Klasse ableitest, kannst Du eine eigene SaveAs Methode definieren. In dieser Methode kannst Du dann die entsprechenden Abfragen hinterlegen und musst sie nicht jedes mal "neu" programmieren.

Dann ersetzt Du schrittweise die Zugriffe auf die ursprüngliche Klasse durch Deine neue Klasse und verwendest die neue SaveAs Methode.
Liebe Grüsse aus der Eifel,

Georg
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1819
Registriert: Fr, 08. Feb 2008 22:29


Zurück zu MS Office

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast