AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi CreateOleObject('Word.Application') - Dotx öffnen aber docx bekommen, wie?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Piro · begonnen am 27. Nov 2018 · letzter Beitrag vom 30. Nov 2018
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

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

  Alt 27. Nov 2018, 14:01
Moin zusammen,

ich habe ein Datei vorlage.dotx, welche ich öffne und mit Daten fülle.
Diese Vorlage ist schreibgeschützt. Der Schreibschutz wird deaktiviert, beim Füllen der Daten.

Das klappt auch alles super. Hier der Code
Delphi-Quellcode:
const
 wdAllowOnlyFormFields = $00000002; // http://www.delphigroups.info/2/d4/455196.html
..
try
   {Verbindung aufbauen}
   Word:=CreateOleObject('Word.Application');
 except
   {Schlägt sie fehl (Word nicht installiert), gibt es eine Fehlermeldung}
   ShowMessage('Microsoft Word kann nicht starten.');
   Screen.Cursor:=crDefault;
   Exit;
 end;

 word.visible:=true;
 word.Documents.Open(doc); // doc = vorlagen.dotx

try
   word.ActiveDocument.Unprotect;

   if word.ActiveDocument.Bookmarks.Exists('Titel') then
   begin
     r := word.ActiveDocument.Bookmarks.Item('Titel').Range;
     r.InsertAfter(lbl_titel.Caption);
   end;

   if word.ActiveDocument.Bookmarks.Exists('Beschreibung') then
   begin
     r := word.ActiveDocument.Bookmarks.Item('Beschreibung').Range;
     r.InsertAfter(edt_beschreibung.Text);
   end;

   word.ActiveDocument.Protect(wdAllowOnlyFormFields);
 finally
   word:=unassigned;
 end;
Leider wird nicht ein docx Dokument geöffnet sondern, dass dotx Dokument und wenn man nicht aufpasst und speichert, werden die Änderungen übernommen.

Starte ich aber das dotx Dokument, macht Word ein docx Dokument auf.

Welcher Schalter fehlt mir, damit das Öffnen aus Delphi mit meinem Code aus der vorlagen.dotx ein document.docx macht?

Danke im Voraus.
Sven
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#2

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

  Alt 27. Nov 2018, 14:11
Müsste das nicht Documents.Add sein, mit dem Namen der Vorlage als Paramter?
Denn du willst ja nicht die Vorlage öffnen sondern ein neues Dokument auf Basis der Vorlage erstellen.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

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

  Alt 27. Nov 2018, 17:07
Vielen vielen Dank.

Das war es.

Einen habe ich dann doch noch. Mit folgendem Code, öffnet Word sich mit dem dotx Dokument.
Delphi-Quellcode:
var
 doc : String;
begin
 doc := frm_main.AppPath + 'data\formulare\vorlage.dotx';
 if FileExists(doc) then
 begin
   ShellExecute(0, 'open', PChar(doc), nil, nil, SW_NORMAL );
 end;
Gibt es hier auch eine Möglichkeit, dass ein docx Dokument geöfnnet wird?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#4

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

  Alt 27. Nov 2018, 17:14
C:\Programme\Microsoft Office\OFFICE11\winword.exe Word-Datei
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#5

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

  Alt 27. Nov 2018, 17:20
Ah ok, damit würde ich aber die Office Version vorgeben.

Das schöne mit meiner Lösung ist, dass ich das das verlinkte Office nehme zum Dateityp. Bei einem Office Wechsel,
muss ich nicht den Pfad zum Office angeben.

Oder ich mache das auch mit CreateOleObject('Word.Application') wenn es keine einfache Lösung gibt.

Aus der Registry, dass Word auslesen, wollte ich eigentlich nicht.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.552 Beiträge
 
Delphi 7 Professional
 
#6

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

  Alt 27. Nov 2018, 17:22
Delphi-Quellcode:
var
 doc : String;
begin
 doc := frm_main.AppPath + 'data\formulare\dokumentenname.docx';
 if FileExists(doc) then
 begin
   ShellExecute(0, 'open', PChar(doc), nil, nil, SW_NORMAL );
 end;
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#7

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

  Alt 27. Nov 2018, 17:25
es gibt doch nur die vorlagen.dotx Datei.

Ich möchte das diese als Vorlage geöffnet wird und Word dann ein normale docx Datei öffnet, wie in meinem vorherigen Code.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

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

  Alt 28. Nov 2018, 10:23
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#9

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

  Alt 28. Nov 2018, 14:49
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
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#10

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

  Alt 28. Nov 2018, 15:02
Das "new" kannte ich noch nicht, als mögliches Command für ShellExecute. Funzt das nur bei Word?
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:12 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