Microsoft Excel - Schnittstelle


Mit der texManager Excel- Schnittstelle können aus einer Excel-Anwendung heraus Word-Dokumente erstellt werden. Unabhängig davon kann man natürlich jede Excel-Tabelle mit "Copy and Paste" in einen Textbaustein einfügen und im texManager speichern.

 

Es werden verschiedene Arten unterstützt:

1. Excel Tabellen oder einzelne Zellen in einen Textbaustein integrieren

Excel Tabellen oder einzelne Zellen können ganz einfach mit "Copy and Paste" in die Textbausteine des texManagers eingefügt werden. Entweder mit oder ohne Verlinkung (Je nachdem welche Art der Einfügung ausgewählt wird).


D.h. Änderungen in der original Excel Tabelle werden automatisch in den Textbausteinen übernommen. Das ist u.a. besonders nützlich, wenn z.B. eine Kalkulation in Excel erstellt wird und die Ergebnisse automatisch in die entsprechenden Textbausteine oder in das Word-Dokument übernommen werden.

 

Damit die Änderungen in der Excel-Tabelle in den Textbausteinen sichtbar werden, müssen diese aktualisiert werden. Entweder richtet man es so ein, dass der Baustein oder das Dokument automatisch beim Öffnen aktualisiert wird oder führt die Aktualisierung manuell aus, indem die Tabelle markiert und durch Drücken der F9-Taste die Aktualisierung durchgeführt wird. Eine dritte Möglichkeit ist die automatische Aktualisierung über einen Makroaufruf.

Video: Excel und Word verknüpfen

Als kleine Anregung wird in diesem Video-Blog gezeigt wie man Daten in einer Excel-Tabelle suchen und dann in ein Word-Dokument bzw. in einenTextbaustein einfügen kann.

2. Excel Creator

Automatisierte Dokumentenerstellung mit Excel-Tabellen

(Ab texManager Version 6.x)


texManager bietet die einfache Möglichkeit, durch eine kleine Erweiterung, die Erstellung von z.B. Word-Dokumenten aus Excel heraus zu steuern.
Dazu gibt es 2 Wege: Entweder wird direkt aus Excel heraus, entsprechend der markierten Zellen, ein neues Word-Dokument generiert oder es wird eine texManager Generator-Liste synchronisiert, aus der dann ein neues Dokument entstehen kann.


Dazu reicht es aus, eine neue Zeile in das entsprechende Excel Worksheet einzufügen. Diese kann später wieder ausgeblendet werden, sodass diese Erweiterung bei der Bearbeitung der Tabelle nicht stört.

In dieser neuen Zeile werden verschiedene Spaltenüberschriften (bis zu 5) eingetragen, die dann die Kommunikation zum texManager herstellen. Die Position der Überschriften richtet sich nach den Spalten, die ausgewertet werden sollen.


<TB-ID> kennzeichnet die Spalte mit texManager Textbaustein-Kurzbezeichnungen. Über diese Bezeichnung werden die entsprechenden Textbausteine im texManager zugeordnet.


<TB-SELECT>
kennzeichnet die Spalte, wo der Benutzer die Zeilen markieren darf, die für die Erstellung eines neuen Dokuments benutzt werden sollen. D.h. alle Zeilen mit einem "X" oder anderen Wert unterhalb der Spalte "TB-SELECT" werden für die automatisierte Dokumentengenerierung herangezogen.

 

Hinweis:

Bei direkter Übergabe aus Excel heraus, werden die Werte in den Zeilen der Spalten <TB-VAR1>, <TB-VAR2>, <TB-VAR3> an die Platzhalter in den entsprechenden Textbausteinen übergeben.

 

Wenn eine Generator-Liste synchronisiert wird, können Daten aus Excel-Zellen (s.o.) über Zellen-Verknüpfungen

oder einer XML-Zuordnung eingefügt werden.

Ein Beispiel dazu:
In der Zeile B6 (Spalte "TB-ID") wird der Textbaustein mit der Kurzbezeichnung "bauantrag" angesprochen. In dem Textbaustein sind 3 Platzhalter definiert, welche folgende Werte aus den entsprechenden Zellen übernehmen: Die "Menge" (TB-VAR1)= 2, den "E-Preis" (TB-VAR2) =  95,00 € und die "Summe" (TB-VAR3) = 190,00 € . Weil in der Zelle H6 (Spalte "TB-Select") ein "X" steht, wird der Baustein mit der Kurzbezeichnung "bauantrag" in das Word-Dokument eingefügt.

Generator-Liste mit Excel-Tabelle synchronisieren

Eine texManager Generator-Liste kann mit den einzelnen Zellen einer Excel-Tabelle synchronisiert werden.

Zuerst muss die gewünschte Tabelle in Excel geöffnet werden, danach wird im texManager der <Excel Creator> gestartet. texManager wertet nun das aktuelle Excel Worksheet aus und überträgt alle "markierten" Bausteine in die Generator-Liste. Falls sich hier schon Textbausteine befinden, werden diese angehakt.
So kann man z.B. eine definierte Dokumentenstruktur vorgegeben werden. Ansonsten werden alle Textbausteine an das Ende der Liste angefügt.

Generator-Liste die mit der aktuellen Excel-Tabelle synchronisiert werden kann
Generator-Liste die mit der aktuellen Excel-Tabelle synchronisiert werden kann

Nachdem alle Bausteine in die Generator-Liste übergeben wurden, besteht nun die Möglichkeit zusätzliche Textbausteine manuell einzufügen. Über die Schaltfläche <Generieren> kann das Dokument automatisiert erstellt werden.

Word -Dokument direkt aus Excel generieren!

Statt die texManager Generator-Liste mit den markierten Excel-Zellen zu synchronisieren, kann der Dokumentengenerierungsprozess auch direkt aus Excel gestartet werden. Dazu muss nur die Excel-Steuerdatei "tm_Excel.xlsm" eingebunden werden. Dort findet man ein Makro mit der Bezeichnung "tm_ExcelCreator".

In diesem Modus können die Daten aus bis zu 3 Zellen (TB-VAR1-TB-VAR3) an die Platzhalter des betreffenden Textbausteins übergeben werden. In den Textbausteinen wird als Platzhalter die  Feldfunktion <MergeField> benutzt, welche die Werte entgegen nimmt. Z.B. {MERGEFIELD TBVAR1}, {MERGEFIELD TBVAR2}, {MERGEFIELD TBVAR3}.

Abhängigkeiten

Excel bietet eine einfache Möglichkeit Abhängigkeiten zwischen einzelnen Zellen zu definieren. Dies kann dafür genutzt werden, um Textbausteine in Abhängigkeit zu setzen. D.h., wenn ich einen bestimmten Baustein in der Excel-Tabelle markiere (also ein "x" in die Spalte <TB-SELECT> eintrage), werden automatisch andere, abhängige Textblöcke markiert oder entmarkiert.

 

Diese Abhängigkeiten werden über Excels "Wenn Dann Funktion" implementiert.
Z.B.: =WENN(H6 = "x";"x"; "") :
Wurde in der Spalte <TB-SELECT> in der Zeile 6 ein "x" eingetragen, wird auch gleichzeitig in der aktuellen Zelle ein "x" eingetragen, ansonsten wird das "x" entfernt.

 

Oder =WENN(UND(H4="x";H12="x");"x";"")
Wurde für die Textbausteine in Zeile 4 und in Zeile 12 jeweils ein "x" eingetragen, wird auch gleichzeitig in der aktuellen Zelle ein "x" eingetragen.

Fazit:
Mit der "Excel Creator" Funktion kann texManager eine komplette, neue Generator-Liste auf Grundlage einer bestehenden "Excel-Tabelle" erstellen. Alternativ können Einträge einer zuvor geöffneten Generator-Liste mit der Excel-Auswahl synchronisiert werden. D.h. man kann eine fertige Dokumentenstruktur, mit Kopf- und Fußzeilen, in einer Generator-Liste vorbereiten und es werden dann automatisch die in Excel ausgewählten Textbausteine zusätzlich angehakt.

Alternativ kann man auch, durch Starten eines entsprechenden Excel-Makros, direkt aus Excel heraus, ein neues Word-Dokument mit befüllten Platzhaltern generieren.


Tipp:
Damit die Spalte mit den Markierungen (TB-SELECT) nicht bis zum Ende der Tabelle ausgewertet werden soll, kann man den Vorgang vorzeitig beenden, indem man in der entsprechenden Zelle "XXX" einträgt.

3. Komplette Excel-Tabellen mit dem XML-Dokumentengenerator (docBuilder I) einbetten

Die Handhabung ist denkbar einfach. Einfach die Zellen oder die ganze Tabelle markieren und das Makro starten.

 

Dabei passiert folgendes:
Der markierte Bereich wird als Excel-Tabelle in einem separaten Word-Dokument eingefügt und im Standard Dokumenten-Ordner (z.B.: C:\ProgramData\texManager CP\Documents\Exceltab.docx) gespeichert.

 

In einer einfachen XML-Datei wird die Struktur des Dokuments abgebildet, sowie die Position der Excel-Tabelle.

Z.B.:

<?xml version="1.0"?>
<DATA>
<BLOCK>
<Field FILE="MYDATABASE"/>
<Field BLOCKNAME="Vorlage-Bestellung"/>
</BLOCK>

<Field FILE="MYDATABASE"/>

<Field BLOCKNAME="Zwischenteil"/>
</BLOCK>

<BLOCK>
<Field FILE=""/>
<Field BLOCKNAME="C:\ProgramData\texManager CP\Documents\Exceltab.docx""/>
</BLOCK>
<BLOCK>

</BLOCK>

<Field FILE="MYDATABASE"/>

<Field BLOCKNAME="Schlussteil"/>
</BLOCK>

<Field FILE="MYDATABASE"/>

<Field BLOCKNAME="Fuss"/>
</BLOCK>
</DATA>

 

Ein Makro startet im Hintergrund, das Modul docBuilder arbeitet dann die XML-Datei ab, bis das fertige Dokument entstanden ist. In dem Makro-Code kann festgelegt werden, wie die Daten im Word-Dokument behandelt werden solen. Z.B. über eine aktive Verlinkung oder unterschiedliche Formatierungsarten.

 

Bsp.:

oWordapp.Selection.PasteExcelTable LinkedToExcel, WordFormatting, RTF 'Verlinkte Tabelle einfügen
Parameters:
LinkedToExcel:
Required Boolean. True links the pasted table to the original Excel file so that changes made to the Excel file are reflected in Microsoft Word.
WordFormatting:
Required Boolean. True formats the table using the formatting in the Word document; False formats the table according to the original Excel file.
RTF:
Required Boolean. True pastes the Excel table using Rich Text Format (RTF); False pastes the Excel table as HTML.

4. Textbausteine durch Markierung automatisiert übergeben

Über eine relative Sprungadresse in der Datei TMUSER.INI im Benutzer-Verzeichnis des texManager können Exceldaten und Word-Textbausteine zusammen in einem Dokument eingefügt werden.

Einmalig legt man das Sprungprofil in der Initialisierungsdatei "tmuser.ini" im Benutzerverzeichnis des texManagers ab.


Der Aufbau ist wie folgt:
Var1 = <Platzhaltername>, <Sprungweite>
Es können bis zu 4 Werte (Var1-Var4) übergeben werden.


Zum Beispiel:
[EXCEL]
Var1=Quantity,3
Var2=Price,4
Var3=Sum,5
Var4=Name,-1

Bei Bedarf kann die Anzahl der Variablen erhöht werden. Über die Sprungweite wird die Richtung und Position der Platzhalterwerte relativ zur Textbaustein-Kurzbezeichnung angegeben. Positive Werte deuten nach rechts, negative Werte nach links.


Durch die relative Positionsauswertung kann man flexibel beliebige Excel-Tabellen auslesen. Die mitgelieferte Wordvorlage mit den Steuer-Makros ("tmExcelCtrl.dotm") muss natürlich im Zugriff sein.

 

Wird ein Textbaustein nicht gefunden, sucht der texManager nach einem "Fehler-Baustein" mit der Kurzbezeichnung "TB_NOT_FOUND". Dieser kann individuell gestaltet werden und wird dann als Ersatz eingefügt.

Platzhalter anlegen

Platzhalter in den Textbausteinen werden über Seriendruck-Felder befüllt. Dazu muss man nur Seriendruckfelder mit der entsprechenden Platzhalterbezeichnung in den Textbaustein einfügen. Die Platzhalternamen entsprechen den Einträgen in der "tmuser.ini" Datei (s.o).

Ein leeres Feld kann im Textbaustein-Editor mit der Tastenkombination <STRG><F9> erzeugt werden. In den geschweiften Klammern wird dann der Begriff "MERGEFIELD" gefolgt von der Platzhalterbezeichnung eingegeben. Z.B. {MERGEFIELD AUFTRAGSNR}. Mit der Tastenkombination <Alt><F9> kann die Ansicht zwischen Feldfunktionen und normalem Text umgeschaltet werden.