|
Direkter Zugriff auf alle Makros
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 unten). 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. Gerhard Frey
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 = "&Makros", .Hinzufügen
End Sub
Sub mMenüDel
ExtrasAnpassenMenüleiste .Kontext = 0, .MenüArt = 0, .Menü = "&Makros", .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 = mName$, .Menü = "&Makros", .AmEndeZufügen = "", .MenüText = mText$, .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
|
|