Winword 6.0
Normalerweise haben Makros die Aufgabe, Arbeitsvorgänge zu vereinfachen oder zu automatisieren. Ihr
Einsatz ist am effektivsten, wenn der Zugriff auf ein Makro schnell und ohne lange Umwege erfolgen kann.
Dies ist etwa der Fall, wenn man für jedes Makro eine eigene Schaltfläche in der Symbolleiste anlegt. Diese
Methode hat allerdings einen Nachteil: Die Symbolleisten werden innerhalb kurzer Zeit überfüllt und dadurch
ziemlich unübersichtlich.
Eine weitere Möglichkeit ist ein eigenes Menü für Makros in der Menüleiste von Word, das als Unterpunkte alle
Makros der Dokumentvorlage ╗NORMAL.DOT½ bereitstellt. Dies erreicht man etwa, indem man nach einem
rechten Mausklick auf die Symbolleiste den Menüpunkt ╗Anpassen½ wählt und im Register ╗Menü½ mit
╗Menüleiste½ zunächst einen neuen Eintrag definiert. Diesen füllt man dann mit Einträgen aus der ╗Kategorie½
╗Makros½. Diese Methode hat allerdings auch einen Nachteil: Sie ist einerseits recht umständlich und
außerdem muß sie nach einem eventuellen Entfernen eines Menüeintrags wiederholt werden.
Viel praktischer ist deshalb das Makro ╗MakroWiz½ (siehe Kasten). Es überprüft, ob das Menü ╗Makros½
bereits vorhanden ist und liefert in diesem Fall eine Dialogbox, in der es nachfragt, ob das Menü entfernt
werden soll.
Enthält die Menüleiste den Eintrag noch nicht, legt ihn das Makro mit allen Makros der
Standard-Dokumentvorlage ╗NORMAL.DOT½ als Unterpunkte an. Das komplette Menü mit dem Namen
╗Makros½ wird also durch das einmalige Ausführen des Makros ╗MakroWiz½ je nach Bedarf ein- oder
ausgeblendet.
Makrolisting MakroWiz
Dim Shared Hot$, maxItems
Sub MAIN
maxItems = 32 'Anzahl begrenzen
If mExist Then
wahl = MsgBox("MakroMenü entfernen?", "MakroWiz . . . ", 35)
Select Case wahl
Case - 1
mMenüDel
Case 0
mMenüDel : mMenüPut
Case 1
End Select
ElseIf Not mExist Then
mMenüPut
End If
End Sub
Function hotkey$(ma$)
pos = 1 : key = 1 : max = Len(ma$)
While pos <= max And key > 0
hk$ = Mid$(ma$, pos, 1)
key = InStr(Hot$, UCase$(hk$))
pos = pos + 1
Wend
hot$ = UCase$(hot$ + hk$)
hotkey$ = hk$
End Function
Sub mMenüNeu
ExtrasAnpassenMenüleiste .Kontext = 0, .Position = - 1, .MenüArt = 0, .MenüText = Y
"&Makros", .Hinzufügen
End Sub
Sub mMenüDel
ExtrasAnpassenMenüleiste .Kontext = 0, .MenüArt = 0, .Menü = "&Makros", Y
.Entfernen
End Sub
Sub mMenüPut
mMenüNeu
anzMakros = ZählenMakros(0)
For anz = 1 To anzMakros
mName$ = MakroName$(anz, 0)
p = InStr(mName$, hotkey$(mName$))
mText$=Left$(mName$, p - 1) + "&" + Mid$(mName$,p)
ExtrasAnpassenMenü .MenüArt = 0, .Position = - 1, .Kategorie = 2, .Name = Y
mName$, .Menü = "&Makros", .AmEndeZufügen = "", .MenüText = mText$, Y
.Hinzufügen, .Kontext = 0
If anz = maxItems Then
anz = anzMakros + 1
End If
Next anz
SendKeys "%m"
End Sub
Function mExist
bool = 0
mMax = ZählenMenüs(0, 0)
y$ = UCase$(MenüText$(0, mMax, 0))
If y$ = "&MAKROS" Then bool = - 1
mExist = bool
End Function