Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie? (https://www.delphipraxis.net/198743-createoleobject-word-application-dotx-oeffnen-aber-docx-bekommen-wie.html)

Delphi.Narium 28. Nov 2018 09:57

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Du willst doch zur Laufzeit des Programmes per Wordfernsteuerung ein Dokument erstellen und mit Inhalt befüllen.

Meiner Meinung nach ist es in diesem Zusammenhang unsinnig, für die Erstellung des Dokumentes nicht die Wordfernsteuerung zu nehmen, sondern über einen anderen Weg zu versuchen (hier ShellExecute) Word zu starten und dann "irgendwie" eine Verbindung zu Word zu bekommen, mit der dann weitergearbeitet wird.

Mit Shellexecute wird nicht Word gestartet, sondern das mit dem Dateityp verbundene Programm. Das mag meist Word sein, muss es aber nicht. Wenn Du für Deine Aufgabe zwingend Word benötigst, dann starte Wort über die Schnittstelle, also
Delphi-Quellcode:
Word := CreateOleObject('Word.Application');
. Vorteil, wenn das nicht funktioniert, weißt Du sofort, dass kein Word zur Verfügung steht und musst dann nicht per ShellExecute hoffen, dass Du zufällig das "richtige" Word startest und nicht eventuell was anderes, auf das Du dann sowieso keinerlei Einfluß hast. Fände es als Anwender jedenfalls befremdlich, wenn "mein" Programm ein Dokument erstellen soll, aber irgendwie bei jedem Versuch 'ne neue Instanz von OpenOffice mit 'nem leeren Dokument startet und dann nix mehr passiert.

Die Parameter von Word sind nicht eindeutiger, es sind halt unterschiedliche Wege zum gleichen Ziel. Man muss sich für die Wordfernsteuerung halt schon mit der Schnittstelle befassen und da gehört das Erstellen eines neuen Dokumentes schon eher zu den einfachen Aufgaben.

p80286 28. Nov 2018 10:23

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Zitat:

Zitat von Piro (Beitrag 1419361)
ich habe ein Datei vorlage.dotx, welche ich öffne und mit Daten fülle.

Erstelle ein neues Dokument mit Hilfe der Vorlage und speichere es im gewünschten Format ab.
Deine Vorgehensweise wird zwar oft angewandt ist aber schlicht falsch.

Gruß
K-H

Schokohase 28. Nov 2018 14:49

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Falls sich noch jemand dafür interessiert, wie das per ShellExecute funktioniert
Delphi-Quellcode:
var
 doc : String;
begin
 doc := frm_main.AppPath + 'data\formulare\vorlage.dotx';
 if FileExists(doc) then
 begin
   ShellExecute(0, 'new', PChar(doc), nil, nil, SW_NORMAL );
 end;
end;
  • open - öffnet die Vorlage zum Bearbeiten
  • new - erstellt ein Dokument auf Basis der Vorlage und öffnet dieses zum Bearbeiten

Jumpy 28. Nov 2018 15:02

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Das "new" kannte ich noch nicht, als mögliches Command für ShellExecute. Funzt das nur bei Word?

Rollo62 28. Nov 2018 15:16

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Das "new" wäre mir auch neu, wo ist das denn beschrieben ?

Hier gibts noch ein paar mehr Optionen.

Edit:
Ok, der Trick könnte sein das man es in der Registry vorher abfragen muss was geht.

Schokohase 28. Nov 2018 15:28

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Rechte Maustaste auf so eine .dotx Datei zeigt mir im Kontext-Menü Neu, Öffnen und Drucken an.
Also auf Englisch New, Open und Print.

Neugierig wie ich nun mal bin ...

Piro 30. Nov 2018 01:09

AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
 
Sorry, dass ich mich jetzt erst melde. Hatte viel um die Ohren.


Super Antworten und tolle Ansätze.

In unserer Firma haben alle Office und daher Word.

CreateOleObject ist schon der richtiger Weg und funktioniert wie gewünscht.

Das mit dem Parameter new werde ich mal versuchen.

Vielen Dank an alle. Mein Problem ist gelöst


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz