Makros


Toolbar von MS Word
Toolbar von MS Word

texManager unterstützt die volle Visual Basic Makrofunktionalität von Microsoft Word. Eine riesige Funktionsbibliothek, die keine Wünsche offenlässt. Mit eigener Programmieroberfläche, Editoren und einem Makro- Rekorder. 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 Makro-Rekorder 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.

Textbaustein-Stammdaten
Textbaustein-Stammdaten

Makrovorlagen / Globale Vorlagen

Damit das Makro immer verfügbar ist, sollte man dieses in einer globalen Wordvorlage speichern. Wordvorlagen haben immer die Endung 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".

texManager API

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 komplette Textbausteinlisten (Kombinationstexte) aufrufen.

 

Das Makro muss in der aktuellen bzw. einer globalen Dokumentenvorlage oder in der Normal.dotm von Word gespeichert werden. 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 Feldfunktionen im Text an.

 

tm_FeldFktAus():

Versteckt die Feldfunktionen 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ührt.


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.

Makro-Code

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

 

API - COM-Schnittstelle des texManagers

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

 

Auf Wunsch erweitern wir die texManager API um weitere Funktionen. Sprechen Sie uns an!