texManager unterstützt die volle Visual Basic Makrofunktionalität von Microsoft Word. Eine riesige Funktionsbibliothek, die keine Wünsche offen lässt. Mit eigener Programmieroberfläche, Editoren und einem Macrorecorder. Von personalisierten Anreden bis zur automatisierten Dokumentengenerierung und Datenbankenzugriffen ist alles möglich. Darüber gibt es jede Menge frei verfügbare Literatur im Internet oder in der Word-Dokumentation. Mit Hilfe von Makros lässt sich der Funktionsumfang des texManagers individuell erweitern.
Jedem Textbaustein kann ein eigenes Makro zugeordnet werden. Der Bezeichnung ist frei wählbar. Der in MS Word integrierte Makrorecorder kann benutzt werden, um eigene Makros kinderleicht zu erstellen. Einfach die Mausbewegungen und Eingaben aufzeichnen und den Makronamen in das Feld <Makro> in den Textbaustein-Stammdaten des entsprechenden Bausteins einfügen. Fertig!
Der Makrorecorder erstellt einen VBA-Programmcode, der auf Wunsch nachbearbeitet und erweitert werden kann. Hier steht der komplette Funktionsumfang der mächtigen
Programmiersprache Visual Basic for Application zur Verfügung. Textbausteineinträge mit hinterlegtem Makro bekommen ein rotes Symbol.
Der Makro-Code selbst bleibt in Word gespeichert, zum Beispiel in einer globalen Wordvorlage. Im texManger wird nur die Bezeichnung des Makros abgelegt.
Damit das Makro immer verfügbar ist, sollte man dieses in einer globalen Wordvorlage speichern. Wordvorlagen haben immer die Endung DOT bzw. DOTM (Z.B.
MyMacros.dotm). Diese globale Vorlage muss in den StartUp-Ordner von Microsoft kopiert werden. Z.B. C:\Users\<Benutzername>\AppData\Roaming\Microsoft\Word\STARTUP.
Hierdurch wird sichergestellt, dass die Makros in der Vorlage automatisch nach dem Start von Word, als Add-In, zur Verfügung stehen.
Alternativ kann die Wordvorlage, auch über einen entsprechenden VBA-Code, bei Bedarf nachgeladen werden. Z.B.: "AddIns("C:\Users\Meier001\MyTemplates\MyMacros.dotm") .Installed = True".
Es besteht zusätzlich die Möglichkeit aus dem VBA Code heraus die API des texManagers direkt anzusprechen, um eine nahtlose Integration in eigenen Programmcodes zu ermöglichen. Diese VBA-Makros können nicht nur jedem Textbaustein, sondern auch kompletten Textbausteinlisten (Kombinationstexten) zugeordnet werden.
Das Makro muss in der aktuellen bzw. einer globalen Dokumentenvorlage oder in der Normal.dot(m) von Word gespeichert werdenn. Wenn ein Textbaustein mit einem hinterlegten Makro in Word eingefügt wird, sucht der texManager nach dem entsprechenden Makro und führt es aus.
Der texManager wir mit ein paar vordefinierten Makros ausgeliefert z.B.:
tm_Placeholder:
Ersetzt einen Platzhalter mit einem Textbaustein. Diese Makro wird für die Verkettung von Textphrasen genutzt.
tm_Update_Fields:
Aktualisiert alle Felder und Verknüpfungen
tm_Skip_End():
Platziert den Cursor an das Ende des Dokuments.
tm_UpdateSource():
Aktualisiert bei verknüpften Objekten im Text die Quelldatei mit den entsprechenden geänderten Inhalten.
tm_Cut_Fields():
Entfernt die Verknüpfung von Objekten wie z.B. Felder. Änderungen in der verbundenen Datenquelle werden nicht mehr an die Felder im Text übertragen.
tm_Cut_MM_Fields():
Entfernt alle Verknüpfungen zu Seriendruck-Feldern.
tm_Update_Fields():
Aktualisiert verknüpfte Objekte im Text mit den Inhalten der Quelle, wie z.B. bei Feldern oder passiven Excel-Verlinkungen.
tm_FeldFktAn():
Zeigt die Feldfumktionen im Text an.
tm_FeldFktAus():
Versteckt die Feldfumktionen im Text.
SendToOutlook():
Kopiert den Inhalt eines geöffneten Dokuments in eine geöffnete Outlook-E-Mail und schließt dann dieses.
NoCr():
Entfernt einen Zeilenumbruch.
NoCrLF():
Fügt den Inhalt der Zwischenablage (Textbaustein) ein und entfernt einen Zeilenumbruch.
tm_Skip_End():
Diese Makro sorgt dafür, dass der Cursor an das Ende des aktuellen Dokuments springt.
docLink():
Textbausteine werden als verlinkte Textbausteine in ein Dokument eingefügt. D.h. spätere Änderungen an den Textbausteinen werden in allen Dokumenten automatisch aktualisiert, worin diese
Textphrase jemals eingefügt wurde. Dieses automatische Update von Inhalten wird nur bei Bausteinen mit diesem Makro durchgeführ
Hinweis:
Wenn einem Textbaustein ein Formular zugeordnet wurde, wird kein Makro ausgeführt!
Wichtig:
Die Makroausführung aus dem texManager heraus kann wie folgt beeinflusst werden:
Wenn beim Makronamen kein Vorzeichen angegeben wird (Standardeinstellung z.B. MyMakro), wird zuerst der Textbaustein eingefügt und danach das Makro ausgeführt. Wenn zuerst ein Pluszeichen (+)
am Anfang des Makronamens erscheint z.B. "+MyMakro", wird erst das Makro ausgeführt und anschließend der Text eingefügt. Wenn vor dem Makronamen ein Minuszeichen ( -) eingeben wird, z.B.
"-MyMakro", dann wird kein Text eingefügt , sondern nur das Makro ausgeführt.
Beispiel-Makro: Daten aus einer Access Datenbank abrufen:
Dieser Code wurde automatisch mit dem Makro-Recorder von Microsoft-Word erstellt.
Weitere Informationen zur VBA-Programmiersprache finden Sie in der entsprechenden Word-Dokumentation oder fragen Sie uns.
Sub Demo_Database_Zugriff()
Dim cDemoDatabase As String
Speicherort der Datenbank:
cDemoDatabase = "C:\texManagerDemo\texManager\Example\Angebote.mdb"
Zugriff auf die Datenbank mit SQL Befehl:
ActiveDocument.MailMerge.OpenDataSource Name:=cDemoDatabase, _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source= cDemoDatabase;Mode=Read;
Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine
Type=6;Jet OLEDB:Database Locking Mode=0;Jet " _
, SQLStatement:="SELECT * FROM `Office Address List`", SQLStatement1:="", _
SubType:=wdMergeSubTypeOAL
Anzeige der gefundenen Datensätze:
Application.Dialogs(wdDialogMailMergeRecipients).Show
Inhalt der Platzhalter (Seriendruck-Felder) im Text mit den Daten füllen:
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = False
ActiveDocument.MailMerge.MainDocumentType = wdNotAMergeDocument
Application.Run ("tm_Cut_MM_Fields")
End Sub
tmWord Klasse
Methoden:
Suche(<cTbKurz>)
Argumente:
cTbKurz = Textbaustein-Kurzbezeichnung
Eigenschaften:
nFound = 1 // Gefunden, Textbaustein wird in die Zwischenablage kopiert
nFound = 2 // Gefunden, verknüpfter Baustein oder Kombinationstext werden eingefügt
nFound = 0 // Nicht gefunden
Zweck:
Textbaustein über die Kurzbezeichnung suchen und in die Zwischenablage kopieren oder bei verknüpften Textbausteinen und Kombinationstexten diese an die aktuelle Cursorposition einfügen.
Es wird die aktuell im texManager geladene Textbaustein-Datenbank genutzt.
InsertTextbl(cSuche,cDatenbank)
Argumente:
cSuche = Textbaustein-Kurzbezeichnung
cDatenbank = Textbaustein-Datenbankname
Eigenschaften:
nFound = 1 // Gefunden, Textbaustein wird in die Zwischenablage kopiert
nFound = 2 // Gefunden, verknüpfter Baustein oder Kombinationstext werden eingefügt
nFound = 0 // Nicht gefunden
Zweck:
Textbaustein in der Datenbank <cDatenbank> über die Kurzbezeichnung suchen und in die Zwischenablage kopieren oder bei verknüpften Textbausteinen und Kombinationstexten diese an die
aktuelle Cursorposition einfügen.
tbListe(<cTbKurz>)
Argumente:
cTbKurz = Textbaustein-Kurzbezeichnung
Eigenschaften:
nFound = 1 // Gefunden, Textbaustein wird in die Zwischenablage kopiert
nFound = 2 // Gefunden, verknüpfter Baustein oder Kombinationstext werden eingefügt
nFound = 0 // Nicht gefunden
Zweck:
Kombinationsliste über die Kurzbezeichnung suchen und in die Zwischenablage kopieren oder bei verknüpften Textbausteinen und Kombinationstexten diese an die aktuelle Cursorposition
einfügen.
Add()
Argumente:
Keine
Eigenschaften:
lOk = true // Neuer Textbaustein wurde erfolgreich angelegt
lOk = false // Neuanlage ist fehlgeschlagen
Zweck:
Markierten Text als Textbaustein abspeichern. Die Auswahl der Datenbank und Position wird über einen Dialog gesteuert.
Ende()
Argumente:
Keine
Eigenschaften:
Keine
Zweck:
Automationsserver beenden
Beispiele (VBA):
Sub tmSuche // Textbaustein suchen und einfügen
Dim cSuche
Dim tmWord As Object
Dim nSeek As Byte
Set tmWord = CreateObject("tmWord.Server")
tmWord.Suche (cSuche)
nSeek = tmWord.nFound
If nSeek = 1 Then
Selection.Paste
End If
End Sub
Sub tmAddTB() // Textbaustein anlegen
Dim tmWord As Object
Dim lOk As Boolean
On Error Resume Next
If Len(Selection.Text) < 2 Then
MsgBox ("Bitte zuerst den Text markieren")
Exit Sub
End If
Selection.Copy
Set tmWord = CreateObject("tmWord.Server")
tmWord.AddText
lOk = tmWord.lOk
If lOk Then
Selection.MoveDown Unit:=wdLine, Count:=1
Else
lOk = MsgBox("Der Text konnte nicht gespeichert werden!", vbCritical, "Achtung")
End If
End Sub