AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert
Thema durchsuchen
Ansicht
Themen-Optionen

Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

Ein Thema von rdeutsch · begonnen am 2. Feb 2023 · letzter Beitrag vom 2. Feb 2023
Antwort Antwort
rdeutsch

Registriert seit: 24. Mär 2006
57 Beiträge
 
#1

Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 14:44
Guten Tag

Mit diesem Code werden zwei Dokumente via Word-OLE zusammengefügt.
Delphi-Quellcode:

  WordApplication: TWordApplication;
  WordDocument: TWordDocument;

var Mischfile: olevariant;
begin
  // Dokument, welches angehängt werden soll
  if rgTypDokument.ItemIndex = 0 then
    Mischfile := docPfad+'Anhang_Text.doc'
  else
    Mischfile := docPfad+'Anhang_Tabelle.doc';

  WordApplication.Connect;
  WordApplication.Documents.Add(docPfad+'Hauptdokument.doc', EmptyParam, EmptyParam, EmptyParam);
  WordDocument.ConnectTo(WordApplication.ActiveDocument);
  WordApplication.visible := true;
  WordApplication.Selection.EndKey(wdStory,EmptyParam);
  WordApplication.Selection.InsertFile(Mischfile, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
Nach dem Zusammenfügen ist im Inhalt vom 2. Dokument (Anhang) aber leider eine andere Schriftart vorhanden. D.h. ab der 2.Zeile ist nicht mehr die Schriftart "Arial" und Grösse 10, sondern "Times New Roman" und Grösse 12.
Das Gleiche passiert auch, wenn Anhang mit einer Tabelle eingefügt wird.

pic.jpg
Der blaue Strich markiert das Hauptdokument (Hauptdokument.doc), der orange Strich den Anhang (Anhang_Text.doc).

Wie kann man verhindern, dass Word beim InsertFile den Inhalt bei der Schrift verändert?
Oder gibt es eine bessere Art zwei Dokumente in Word via OLE zusammenzufügen?

Im Anhang ist ein kleines Demoprogramm inkl. Code, welches das Problem aufzeigt.

Danke für jede Hilfe und Gruss,
Robert
Angehängte Dateien
Dateityp: zip WordOLE_Dok_merge.zip (198,8 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 16:21
Delphi-Quellcode:
  WordApplication: TWordApplication;
  WordDocument: TWordDocument;

var
  Mischfile: olevariant;
  vParam : OleVariant;
begin
  // Dokument, welches angehängt werden soll
  if rgTypDokument.ItemIndex = 0 then
    Mischfile := docPfad+'Anhang_Text.doc'
  else
    Mischfile := docPfad+'Anhang_Tabelle.doc';

  WordApplication.Connect;
  WordApplication.Documents.Add(docPfad+'Hauptdokument.doc', EmptyParam, EmptyParam, EmptyParam);
  WordDocument.ConnectTo(WordApplication.ActiveDocument);
  WordApplication.visible := true;
  WordApplication.Selection.EndKey(wdStory,EmptyParam);
// ******
  vParam := 'Standard'; // ggfls. den Namen einer geeigneten Formatvorlage eintragen,
                        // wenn die Formatvorlage Standard nicht mit Arial 10 definiert ist.
  WordApplication.Selection.Set_Style(vParam);
// ******
  WordApplication.Selection.InsertFile(Mischfile, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
Ansonsten mal hier in diesem Umfeld weitersuchen: word.selection.font
  Mit Zitat antworten Zitat
rdeutsch

Registriert seit: 24. Mär 2006
57 Beiträge
 
#3

AW: Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 16:40
Vielen Dank, aber leider hat sich nichts verändert.
Die Schrift der Normal.dotm scheint hier keinen Einfluss zu haben. In der Normal.dotm ist "Calibri"/Grösse 11 definiert, aber die "falsch" Schriftart nach dem Dokument einfügen ist "Times New Roman"/Grösse 12. Keine Ahnung woher diese Schriftänderung kommt.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 16:50
Schau Dir bitte mal die Schriftart des ersten Dokumentes an und zwar am letzten Absatz (das Absatzzeichen), nicht irgendwo "mittendrin" dito. ganz am Anfang des zweiten Dokumentes.

Ist dort eventuell Times enthalten.

Beim Einfügen von Texten via Olé kratzt sich Word nicht an den Einstellungen der Normal.dot, sondern nimmt immer für neue Texte das, von dem es meint, dass es am Ende, vor der Einfügestelle, zu finden meint. Dadurch bekommt man auch immer wieder Times zu Gesicht, da das früher mal der Standard war und der über Generationen von Dokumenten weitervererbt wird.

Füge bitte hinter dem WordApplication.Selection.Set_Style(vParam); noch ein WordApplication.Selection.InsertParagraphAfter; ein. Ändert sich dadurch etwas?

Geändert von Delphi.Narium ( 2. Feb 2023 um 16:54 Uhr) Grund: Text ergänzt.
  Mit Zitat antworten Zitat
rdeutsch

Registriert seit: 24. Mär 2006
57 Beiträge
 
#5

AW: Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 18:38
Das "WordApplication.Selection.InsertParagraphAfte r;" hat leider auch nichts gebracht.
ABER dein Hinweis bezüglich der Schriftart vom letzten Absatz im ersten Dokument war Gold wert. Zwar hatte der letzte Absatz auch keine Times mehr drin, sondern nur Arial. Aber in der Vorlage (mit dem das Hauptdokument generiert wird) war bei der Formatvorlage "Standard" die Schriftart "Times New Roman" definiert. Nachdem ich diese auf Arial gewechselt habe, schauts nun gut aus.
Es ist mir aber ehrlich gesagt nicht klar, wieso nun bei allen Dokumenten das eingefügte zweite Dokument richtig und ohne Formatänderungen angezeigt wird - egal ob mit Text- oder Tabelleninhalt. Und auch die Schriftart ist stimmig - egal welche Schriftart das zweite Dokument hat - Arial oder eine xy-Schriftart.
Hauptsache jetzt passt es.

Vielen Dank für deinen schnellen Support.
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Word-OLE: Zwei Dokumente zusammenfügen - Schriftart wird verändert

  Alt 2. Feb 2023, 18:51
Das Problem ist nicht die Schriftart des letzten Absatzes, sondern die Schriftart, die in dem Dokument "hinter" dem letzten Absatz definiert ist, also hinter dem letzten Paragraph-Zeichen für 'nen Zeilenumbruch ..., in dem Dokument. Meist ist das die Schriftart, die in der Normal.dot als Vorlage (zur Zeit der Erstellung - meist Standard) für dieses Dokumentes diente.

Keine Ahnung, wie man das verlässlich prüfen und ändern kann.
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz