docBuilder - Mit "XML" Daten übergeben und Dokumente generieren


Menü: [Bearbeiten] [docBuilder]

Mit dem texManager ist es möglich komplette Dokumente aus anderen Anwendungen heraus generieren zu lassen. Dazu wird das Schnittstellenmodul docBuilder genutzt. docBuilder ist ein Modul, das separat (docbuilder.exe) oder direkt vom Hauptmenü des texManager aus gestartet werden kann.

 

docBuilder liest eine vorgegebene XML-Datei aus und generiert aus den Informationen ein oder mehrere Dokumente. Die Informationen bzw. Daten in der XML-Datei können durch andere Anwendungen wie. z.B. Excel oder jedes andere Windowsprogramm erstellt werden. Das XML-File besteht aus folgenden Informationen:

<Field FILE="DemoDatabase"/>

<Field FILE="DemoDatabase"/>

 <Field Name="NACHNAME

 Value="Hans Meier""/>

=> Bezeichnung der texManager Datenbank

=> Kurzbezeichnung des Textbausteins oder Dateiname

=> Bezeichnung des Platzhalters im Dokument

=> Wert mit dem der Platzhalter gefüllt wird


Der docBuilder wird separat -im Hintergrund- gestartet und arbeitet dann Stück für Stück die Einträge in der XML-Datei ab. Es werden die angegebenen Textblöcke in den texManager-Datenbanken gesucht und mit den Daten gefüllt. Anschließend werden sie in ein Dokument eingefügt. Am Ende sollte ein komplettes Word-Dokument mit befüllten Platzhaltern entstanden sein.

 

Mit docBuilder können komplexe Texte dynamisch generiert werden. Die Reihenfolge der einzelnen Textphrasen wird durch die XML-Datei festgelegt, zu jedem Baustein kann ein VBA-Makro gestartet werden.

Platzhalter
Platzhalter

docBuilder greift direkt auf die Textbaustein Datenbanken des texManagers zu. Zum Testen kann man einen Platzhalter aus den Beispieldateien kopieren und diesen im eigenen Textblock verwenden. Denken Sie daran die Feldnamen entsprechend der XML-Einträge (z.B.: <Field Name="NNAME" Value="Mustermann"/>)  umzubenennen.

Aufbau der XML-Übergabedatei

-----------------------------------------
<?xml version="1.0"?>
<DATA>

<BLOCK> TextBaustein
 <Field FILE="MyDatabase"/> Name der Textbaustein-Datenbank
 <Field BLOCKNAME="TB1000"/> Kurzbezeichnung des Texbausteins oder Dateiname
 <Field Name="Version" Value="12.0b"/> Name = Feldname und Value = Feldwert
</BLOCK>
<BLOCK>
 <Field FILE="MyDatabase"/>
 <Field BLOCKNAME="TB1022"/>
</BLOCK>
</DATA>
-----------------------------------------

Die einzelnen Textbausteine werden zwischen der Anweisung <BLOCK> </BLOCK>  eingefasst.
Werden keine Daten übergeben, dann entfällt die <Field> Anweisung.

Externe Verweise

In der XML-Datei können neben texManager-Textbausteinen zusätzlich Word-Dokumente (.doc, .docx, .rtf) und Bilddateien (.jpg) definiert werden, die bei der  Generierung einbezogen werden.

Z.B.: <Field BLOCKNAME="F:\Projekte\Entwicklungen\Aufbau\Maxima1058.docx"/>

oder <Field BLOCKNAME="C:\Temp\Bild058.jpg"/>

 

Beispieldatei docBuilder.xml (Textbaustein Datenbank DemoDatabase.ADT muss geladen sein):
<?xml version="1.0"?>
<DATA>
<BLOCK>
 <Field FILE="Standard"/>
 <Field BLOCKNAME="TB1000"/>
 <Field NAME="Version" Value="2.0b"/>
 <Field Name="Datum" Value="02.01.2019"/>
 <Field Name="ABT" Value="E-6651BZ-2"/>
 <Field Name="PKT1" Value="zentrale Textbaustein-Datenbank für alle Benutzer"/>
 <Field Name="PKT2" Value="Gliederung nach Kategorien"/>
 <Field Name="PKT3" Value="Import von Dokumenten"/>
 <Field Name="PKT4" Value="automatisches Ausfüllen von Formularen"/>
 <Field Name="PKT5" Value="Übergabe mehrerer Textbausteine (MultiCopy)"/>
 <Field Name="PKT6" Value="volle Netzwerkfähigkeit"/>
 <Field Name="PKT7" Value="Kombinationstexte"/>
 <Field Name="PKT8" Value="Autotextfunktion"/>
</BLOCK>
<BLOCK>
 <Field FILE="Standard"/>
 <Field BLOCKNAME="TB1022"/>
 <Field Name="NNAME" Value="Mustermann"/>
 <Field Name="VNAME" Value="Alfred"/>
 <Field Name="STRASSE" Value="Musterungsweg 34"/>
 <Field Name="ORT" Value="32011 Musterhausen"/>
 <Field Name="TELEFON" Value="++49 64554 4554 1"/>
 <Field Name="EMAIL" Value="H.Mustermann@Muster.de"/>
</BLOCK>
<BLOCK>
 <Field FILE="Standard"/>
 <Field BLOCKNAME="TB1040"/>
</BLOCK>
<BLOCK>
 <Field FILE="Standard"/>
 <Field BLOCKNAME="TB1030"/>
 <Field BLOCKNAME="C:\Temp\Bild058.jpg"/
</BLOCK>
<BLOCK>
 <Field FILE="Standard"/>
 <Field BLOCKNAME="TB1020"/>

 <Field BLOCKNAME="F:\Projekte\Entwicklungen\Aufbau\Maxima1058.docx"/>
</BLOCK>

</DATA>

Ein weiteres Beispiel wie man einen kleinen Dokumentengenerator realisieren kann, der nur einzelne Word-Dokumente und Bild-Dateien hintereinander einfügt:

<DATA>
 <BLOCK>
   <Field FILE=""/>
    <Field BLOCKNAME="C:\Angebote\Vorlagen\Vorlage-Angbeot-1.docx"/>
 </BLOCK>
 <BLOCK>
   <Field FILE=""/>
   <Field BLOCKNAME="C:\Angebote\Vorlagen\Zwischenteil.docx"/>
 </BLOCK>
 <BLOCK>
   <Field FILE=""/>
   <Field BLOCKNAME="C:\Angebote\Vorlagen\Bild12345.jpg"/>
 </BLOCK>
 <BLOCK>
   <Field FILE=""/>
   <Field BLOCKNAME="C:\Angebote\Vorlagen\Positionen.docx"/>
 </BLOCK>
 <BLOCK>
   <Field FILE=""/>
   <Field BLOCKNAME="C:\Angebote\Vorlagen\Garantiebed.docx"/>
 </BLOCK>
 <BLOCK>
   <Field FILE=""/>
   <Field BLOCKNAME="C:\Angebote\Vorlagen\Schlussteil.docx"/>
 </BLOCK>
</DATA>

Tipp:

Wenn mann nun noch die XML-Dateien mit der docBuilder.exe fest verknüpft, werden beim Doppelklicken auf die XML-Dateien sofort komplette Word Dokumente auf Basis der vorgegeben Struktur erzeugt.

Neue Dokumente anlegen (bei externen Verweisen)

Normalerweise wird ein externes Word-Dokument per Verweis in ein geöffnetes Dokument eingefügt. Möchte man allerdings ein neues Dokument auf Grundlage des Verweises anlegen, kann man dieses tun, indem man ein "+" Zeichen vor den Pfad stellt.
Z.B.: <Field BLOCKNAME="+C:\Angebote\Vorlagen\Schlussteil.docx"/>

Dokument automatisch speichern

Mit dem <TARGET> Tag kann ein Dateiname mit Pfad angegeben werden und das Dokument wird nach dem Erzeugen dort gespeichert.
Z.B.:

<?xml version="1.0"?>

<DATA>

<BLOCK>

 <Field FILE=""/>

 <Field BLOCKNAME="+F:\Test\Letter_Proof_DE_Template.doc"/>

 <Field TARGET="F:\ABC-Dokumente\Ablage\A\texManager\100001880-ZPD-000-03.docx"/>

 <Field Name="CustomerName" Value="ABC Consult ABT 223"/>

 <Field Name="CustomerContactPerson" Value="Hans Meier"/>

 <Field Name="CustomerStreet" Value="Berliner Ring 2545"/>

 <Field Name="CustomerCity" Value="Berlin”/>

</BLOCK>

</DATA>

 

Benachrichtigungen  unterdrücken

Nach jedem Generierungsdurchlauf wird am Schluss eine Nachricht ausgegeben. Manchmal möchte man aber diese Informationen nicht angezeigt bekommen, weil sie einen automatisierten Prozess stören. Durch einen Eintrag in die texManager Initialisierungsdatei „TMUSER.INI“ im texManager Benutzerverzeichnis (C:\Benutzer\<BENUTZERNAME>\AppData\Roaming\texManager CP), kann dieses Verhalten unterbunden werden. Einfach unter [Optionen] den Eintrag NOMSG=1 einfügen und die  Schluss-Message wird unterdrückt.

Kommandozeilenaufruf

docbuilder kann beim Aufruf der Name der zu verarbeitenden XML-Datei als Parameter übergeben werden. Zum Beispiel: C:\Program Files\texManager 8\docbuilder.exe "c:\test\mydocbuilder.xml"

Im Benutzerverzeichnis des texManagers befindet sich die Initialisierungsdatei TMUSER.INI, dort können Einstellungen für den docBuilder I festgelegt werden. Dazu legen Sie in der Sektion [Pfade] die entsprechende Variable an.

Dateinamen für den automatischen Aufruf

Wenn der docbuilder I ohne Parameter aufgerufen wird, sucht dieser nach folgender XML-Datei: C:\docBuilder\docbuilder.xml oder er benutzt den Dateinamen aus der Variablen UEBERGABE aus der Datei TMUSER.INI im Benutzerverzeichnis.

Uebergabe=<Name der XML-Datei (inkl. Pfad)>
z.B.: Uebergabe=C:\FA12\TEST\mydocbuilder.xml

Datenpfad für die Textbausteindatenbanken

Mit der Variablen dbDaten kann der Datenpfad für die Textbausteindatenbanken festgelegt werden. Wenn hier nichts angegeben wird, gilt der aktuelle Datenpfad des texManagers.
dbDaten=<Datenverzeichnis>
z.B.: dbDaten=c:\test\texmanager\daten

 

Hinweis:
Bitte beachten Sie, dass die Datenbank, die in der XML-Datei angesprochen wird, in dem aktuellen Textbausteindatenbank-Verzeichnis oder in dem angegebenen Datenpfad  vorhanden ist.

Die internen elektronischen Formulare werden nicht unterstützt. VBA-Formulare können über Makros angesprochen werden.