Results 1 to 10 of 10

Thread: TwordApplication Hoe te gebruiken

  1. #1

    TwordApplication Hoe te gebruiken

    Hallo,

    Ik lees diversen over TWordApplication, maar waar vind ik die?
    Moet ik een component laden?
    Ik wil een Word of PDF document toevoegen aan een bestaand document
    Last edited by Maarten; 10-Nov-17 at 19:15.

  2. #2
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,708
    Word automation (oftewel OLE/COM) is een avontuur op zich waar je veel "Plezier" aan zult gaan beleven.

    Maar als antwoord op je vraag: je moet de unit "Word2000" of "WordXP" toevoegen aan je uses clause.
    (Deze units staan in de "{$BDS}\OCX\Servers"-map).

    Daarna kun je de voorbeelden op de diverse websites uitproberen.
    TMemoryLeak.Create(Nil);

  3. #3
    Ik denk inderdaad dat het "gezellig" wordt.
    Geen enkel voorbeeld werkt, dingen die bij TwordApplication als functie beschikbaar zijn (bv Insertfile) werken weer niet "CreateOleObject" en de simpele open lukt al niet bij TwordApplication (Type komt niet overeen).
    AHA, gevonden:
    Var
    WA: TWordApplication;
    WD: TWordDocument;
    EmptyParam: OleVariant;
    begin
    inherited;
    EmptyParam := Variants.EmptyParam
    WA := TWordApplication.Create(Self);
    WD := TWordDocument.Create(Self);
    WA.Connect;
    WA.Visible := False;
    WD.ConnectTo(WA.Documents.Open(Filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam));
    WA.Selection.InsertFile(Filename, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    ....
    WD.saveas(Filename);
    WD.Close;
    WD.Free;
    WA.Free;
    ;
    Last edited by Maarten; 11-Nov-17 at 13:55.

  4. #4
    Marius
    Join Date
    Jul 2013
    Location
    Groningen
    Posts
    178
    We gebruiken deze wel ergens in onze applicatie, maar het is werkelijk zo'n ruk component (met zulke niet "fijne" bijverschijnselen) dat je deze beter kan vermijden als je die mogelijkheid hebt.

  5. #5
    Quote Originally Posted by Maarten View Post
    dingen die bij TwordApplication als functie beschikbaar zijn (bv Insertfile) werken weer niet "CreateOleObject" en de simpele open lukt al niet bij TwordApplication (Type komt niet overeen).
    Weet je dat zeker? Ik dacht dat TWordAplication al in designtime gebonden met Word maar eigenlijk dezelfde functionaliteit heeft als CreateOleObject. Alleen je moet het wel goed gebruiken. Maar ik weet 100% zeker dat .InsertFile werkt via OleObject. Zie bijvoorbeeld https://blogs.technet.microsoft.com/...word-document/

    Omdat TWordApplication ook nog eens Word-versie gebonden is gebruik ik die nooit.

  6. #6
    Een voordeel van deTwordApplication en Twordducument is dat je makkelijk alle beschikbare methodes etc ziet en welke parameters meemoeten

  7. #7
    *+E13818MU01F0F* Norrit's Avatar
    Join Date
    Aug 2001
    Location
    Landgraaf
    Posts
    967
    En voor dit laatste hebben ze in Word macro's uitgevonden.
    Ik ga daar echt niet zelf verzinnen hoe het moet, simpelweg macro opnemen met de handelingen die ik wens en dat vertalen naar mijn OLE object. Ik ben echt een tegenstander van early binding, en zeker omdat het alleen maar 'voor het gemak' is.
    Objective reality is a delirium caused by lack of alcohol in blood

  8. #8
    Nu kan ik mooi een document openen.....en kunstjes mee uithalen...maar..
    Ik wil een document openen gemaakt met verzendlijst. (met 1 record)
    Wanneer ik deze bv via shellexecute open, komt de vraag of ik de brief aan een databestand wil koppelen.
    Echter wanneer ik hem open via de bovengenoemde methode, komt de vraag niet en zijn de velden gevuld met data waarvan ik niet weet waar het vandaan komt.

  9. #9
    Welke genoemde code? (voorbeeldcode)

    Is je bestand wel daadwerkelijk gekoppeld aan een databestand? Want als dat zo is zou je met ShellExecute ook geen vraag moeten krijgen om hem te koppelen (omdat deze al gekoppeld is).

    (en wat doet het bestand als je die gewoon opent in de verkenner?)

  10. #10
    Zo werkt het al aardig (voor de liefhebber)(Alleen voor 1 record anders loop van wdfirstrecord naar wdlastrecord toevoegen)
    var
    wordApp: TWordApplication;
    FileFormat: OleVariant;
    begin
    try
    wordApp := TWordApplication.Create(nil);
    wordApp.Connect;
    wordApp.Visible := false;
    wordApp.Documents.Open(FileName, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    wordApp.ActiveDocument.MailMerge.MainDocumentType := wdFormLetters;
    wordApp.ActiveDocument.MailMerge.OpenDataSource('D ata.htm', EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    wordApp.ActiveDocument.MailMerge.Destination := wdSendToNewDocument;
    wordApp.ActiveDocument.MailMerge.SuppressBlankLine s := true;
    wordApp.ActiveDocument.MailMerge.Execute(false);
    wordApp.Quit(wdDoNotSaveChanges, EmptyParam, EmptyParam);
    wordApp.ActiveDocument.SaveAs(pad, FileFormat, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
    EmptyParam, EmptyParam, EmptyParam);
    finally
    wordApp.Free();
    end;
    end;
    Source: http://www.delphigroups.info/2/8/942535.html
    Last edited by Maarten; 10-Jan-18 at 18:16.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •