AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

moderne Word-Anbindung

Ein Thema von baumina · begonnen am 17. Sep 2014 · letzter Beitrag vom 19. Sep 2014
Antwort Antwort
Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
210 Beiträge
 
Delphi 12 Athens
 
#1

AW: moderne Word-Anbindung

  Alt 18. Sep 2014, 08:32
Ich habe schon mal eine Applikation geschrieben die Word Automation benutzt und Daten aus einer DB in Word einsetzt.
Die Word Dokumente enthalten Platzhalter mit #Platzhaltername# gekennzeichnet.
Somit kann man beliebige Platzhalter definieren und benötigt keine Serienbrieffunktion von Word.

Ich habe die "Microsoft Office 2000 Beispiele..." unter "Packages installieren" aktiviert und arbeite mit dem Word200 OLE Objekt, das funktioniert auch mit Word2013.

Hier einige Code-Auszüge:
Code:
//******************************************************************************
//***************** Word öffnen ************************************************
//******************************************************************************
Procedure ConnectToWord(sichtbar: Boolean);
Var
  wFalse, TempFile: OleVariant;
  Ziel, Dateiname: String;

Begin
  wFalse := False;
  { Check if file exists }
  If Not FileExists(Filename) Then
    Begin
      ShowMessage('Das Dokument ist nicht vorhanden');
      Exit;
    End;

  With Form1 Do
    Begin

      Try
        If (Not aktiv('Word.Application')) Then
          Begin
            WordOpen := False;
          End;
        WordApplication1.Connect;
      Except
        Showmessage('Word konnte nicht gestartet werden');
        exit;
      End;
      If WordOpen Then
        WordDocument1.Close(wFalse);

      If Aendern Then
        Begin
          // Kopie von Worddatei anlegen und damit arbeiten bei Replace
          Dateiname := FrmVerwaltungBriefe.BGrid.Cells[2, StrToInt(BriefIndex)];
          Ziel := AppPath + '$TempDoc.doc';
          Tools.CopyFile(Dateiname, Ziel);
          TempFile := Ziel;
          WordApplication1.Documents.OpenOld(TempFile, wFalse, wFalse, wFalse,
            EmptyParam, EmptyParam, wFalse, EmptyParam, EmptyParam, EmptyParam);
        End
      Else
        // Wenn 'Brief laden' aufgerufen wurde, dann mit Orginaldatei arbeiten
        WordApplication1.Documents.OpenOld(FileName, wFalse, wFalse, wFalse,
          EmptyParam, EmptyParam, wFalse, EmptyParam, EmptyParam, EmptyParam);

      WordDocument1.ConnectTo(WordApplication1.ActiveDocument);
      WordApplication1.Visible := sichtbar;
      WordOpen := True;
      //WordApplication1.Activate;
    End;

End;

//******************************************************************************
//***************** Word Beenden ***********************************************
//******************************************************************************
Procedure WordBeenden;
Begin
  With Form1 Do
    Begin
      If WordOpen Then
        Begin
          Try
            WordApplication1.Quit;
            WordApplication1.Disconnect;
          Except
          End;
        End;
    End;
End;

//******************************************************************************
//***************** Word Replace Funktion **************************************
//******************************************************************************
{
  Diese Funktion startet eine Word versteckte Instanz, öffnet eine Datei und
  ersetzt (alle) Vorkommen von "SearchString" durch "ReplaceString".
  Die Funktion ist ähnlich zur StringReplace() Funktion.
}

Procedure Word_StringReplace(SearchString, ReplaceString: String; ReplaceAll: Boolean);
Const
  wdFindContinue = 1;
  wdReplaceOne = 1;
  wdReplaceAll = 2;
Var
  _Search, _Replace, _Wrap, _ReplaceAll, F, T: OLEVariant;

Begin
//  Application.ProcessMessages;
 { Initialisiere Parameter}
  If ReplaceAll Then
    _ReplaceAll := wdReplaceAll
  Else
    _ReplaceAll := wdReplaceOne;

  _Search := SearchString;
  _Replace := ReplaceString;
  _Wrap := wdFindContinue;
  F := False;
  T := True;
  { Perform the search}
  //FindText,Case,WholeWord,WildChars,SoundsLike,AllWordForms,Forward,Wrap,ReplaceWith,ReplaceTyp
  Form1.WordApplication1.Selection.Find.ExecuteOld(
    _Search, F, T, F, F, F, T, _Wrap, F, _Replace, _ReplaceAll);
//  Application.ProcessMessages;
End;

//******************************************************************************
//**********************        Formulare       *******************************
//******************************************************************************

//******************************************************************************
//********************** Replace Brief ausgeben ********************************
//******************************************************************************
Procedure BriefReplace;
Var
  i: Integer;

Begin
//  Application.ProcessMessages;

  Word_StringReplace('#Adr_Anrede#', Form1.QKundenAnrede.Text, True);
  Word_StringReplace('#Adr_Vorname#', Form1.QKundenVorname.Text, True);
  Word_StringReplace('#Adr_Name#', Form1.QKundenName.Text, True);
  Word_StringReplace('#Adr_Strasse#', Form1.QKundenStrasse.Text, True);
  Word_StringReplace('#Adr_PLZ#', Form1.QKundenPLZ.Text, True);
  Word_StringReplace('#Adr_Ort#', Form1.QKundenOrt.Text, True);
  Word_StringReplace('#GebDatum#', Form1.QKundenGebDatum.Text, True);

  For i := 1 To FrmFelder.Grid.RowCount - 1 Do
    Begin
      Word_StringReplace('#' + WordFeld[i].Name + '#', WordFeld[i].Text, True);
    End;

  Application.ProcessMessages;
End;
  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 20:52 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