Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - WordApplication Dokument einfügen


MoreThanWords - Mo 10.03.03 18:26
Titel: WordApplication Dokument einfügen
Hallihallo

Mit folgendem Code kann ich ein Dokument einfügen:


Quelltext
1:
2:
WordApplication.Selection.InsertBreak(wdPageBreak);
                           WordApplication.Selection.InsertFile(SFileName,EmptyParam,EmptyParam,EmptyParam,EmptyParam);


Hat nun jemand einen Ahnung wie man es schafft, dass die Formatierungen des eingefügten Dokumentes mitübernommen werden?

Beispiel:
Das Originaldokument hat einen linken Rand von 2cm
Das eingefügte Dokument aber nur 1cm

Wäre über Lösungsvorschläge sehr dankbar, da die Dokumentationen, die ich über die TWordApplication gefunden habe leider nicht sehr umfangreich sind.


berni - Mo 10.03.03 19:08

Hi,
wem sagst Du das *g* - siehe meinen Tread von heute ...

Ich glaube Dein Anliegen wird nicht hinhauen, da meines
Wissens die Einstellung des Hauptdokumentes gilt und dann
alles andere umformatiert wird.
Aber ich bin auch kein Word GURU, ich muss das leider
in Delphi auch nur vergewaltigen ;-)

Gruss,
Bernd


Keldorn - Mo 10.03.03 22:44

Hallo

ich würd das einzufügende Dok erstmal öffnen und die pagesetup eigenschaft auslesen und die dann auf das andere Dok übertragen
kleines Beipiel:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
procedure TForm1.Button1Click(Sender: TObject);
var s:olevariant;
begin
  s:='c:\test.doc';
  with WordApplication1 do
    begin                         
      //neues Dokument
      WordDocument2.connectto(Documents.Add(emptyparam,emptyparam));
      //einzufügendes Document öffnen
      WordDocument1.ConnectTo(Documents.open(s,
                              Emptyparam,Emptyparam,Emptyparam,Emptyparam,
                              Emptyparam,Emptyparam,Emptyparam,Emptyparam,
                              Emptyparam));
      //Einstellungen holen und setzen
      //worddocument2.PageSetup:= worddocument1.PageSetup geht leider nich, keine ahnung wieso nicht, kannst aber auch alles einzeln setzten
      worddocument2.PageSetup.LeftMargin  := WordDocument1.PageSetup.LeftMargin;
      worddocument2.PageSetup.topMargin   := WordDocument1.PageSetup.topMargin;
      worddocument2.PageSetup.RightMargin := WordDocument1.PageSetup.rightMargin;
      worddocument2.PageSetup.bottomMargin:= WordDocument1.PageSetup.bottomMargin;
      worddocument2.PageSetup.PageWidth   := WordDocument1.PageSetup.PageWidth;
      worddocument2.PageSetup.PageHeight  := WordDocument1.PageSetup.PageHeight;
      //...restliche eigenschaften

      //doc wieder schliesen
      WordDocument1.Close;
      WordDocument1.Disconnect;

      //Dok wieder in Vordergrund holen und datei einfügen
      WordDocument2.Activate;
      Selection.InsertFile(s,emptyparam,emptyparam,emptyparam,emptyparam);
      WordDocument2.Disconnect;

    end;
end;

hier werden die pagesetupEinstellungen komplett übernommen. wenn du das nur für den einzufügenden Text haben willst, mußt dus ändern. Zeichne ein Word makro auf und gugg wie es Word macht.

andre idee hab ich erstmal keine

Mfg Frank


MoreThanWords - Di 11.03.03 11:26

Danke erstmal für die Vorschläge.