![]() |
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:
. 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.
Word := CreateOleObject('Word.Application');
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. |
AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
Zitat:
Deine Vorgehensweise wird zwar oft angewandt ist aber schlicht falsch. Gruß K-H |
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;
|
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?
|
AW: CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
Das "new" wäre mir auch neu, wo ist
![]() ![]() Edit: Ok, der Trick könnte sein das man es in der Registry vorher abfragen muss was geht. |
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 ... |
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. |
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