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
 
Delphi.Narium

Registriert seit: 27. Nov 2017
2.599 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 27. Nov 2018, 16:55
Du willst also weder eine Vorlage öffnen, noch ein Dokument, sondern ein neues Dokument (anhand einer Vorlage) erstellen.

Das solltest Du auch so schreiben und Dir auch darüber klar werden, dass Du genau das möchtest.

Also ungefähr sowas:
Delphi-Quellcode:
function NeuesDokument(aWordApp : TWordApplication; aWordDoc : TWordDocument; aDot : String; aVisible : Boolean = false) : Boolean;
var
  vDOT : OleVariant;
  vNewDOT : OleVariant;
  vDocType : OleVariant;
  vVisible : OleVariant;
begin
  vDOT := aDot; // Das ist die Vorlage, anhand der ein neues Doukment erstellt werden soll.
  vNewDOT := False; // Wir wollen keine neue Vorlage erstellen, deshalb False.
  vVisible := aVisible; // Word soll das Ganze sichtbar machen.
  vDocType := EmptyParam; // Der Parameter muss angegeben werden, soll aber leer sein.
  try
    aWordApp.Documents.Add(vDOT, vNewDOT, vDocType, vVisible);
    aWordDoc.ConnectTo(aWordApp.ActiveDocument);
    aWordApp.ActiveWindow.ActivePane.View.type_ := wdOutlineView;
    Result := True;
  except
    on e : Exception do begin
      Result := False;
      MessageDlg(e.Message,mtError,[mbOk],0);
    end;
  end;
end;
Wenn es unbedingt ShellExcecute sein muss, schau Dir mal die Kommandozeilenparameter an: https://support.office.com/en-us/art...5-441737deb3a6

Und dann hoffe darauf, dass sie bei anderen Officeversionen (OpenOffice ...) entsprechend implementiert sind.

Denn ShellExecute und Open startet das Officepaket, dass in der Registry (für den übergebenen Dateityp) eingetragen ist (und das muss nicht das Office von MS sein).
Bei unterschiedlichen Officeversionen von MS mag das problemlos gehen, bei der Unterstützung unterschiedlicher Officepakete unterschiedlicher Hersteller, könnte es sportlich werden.

CreateOleObject('Word.Application') nimmt das MS-Officepaket, das installiert ist. Das ist beim Wechsel der Officeversion für Dein Programm transparent. Solange an der Schnittstelle (MS-seitig) nix geändert wird, kann Dir die Officeversion auf dem "Zielrechner" (beim Kunden ...) egal sein.
  Mit Zitat antworten Zitat
 


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 20:38 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-2025 by Thomas Breitkreuz