Aktuelle Seite:
/vba/textmarken.htm
Letzte Änderung: 24.06.2006

Getestet unter Word97Getestet unter Word2000  
Makro/Datei speichern
Print

Wer viel mit Textmarken arbeitet kennt den umständlichen Weg, jedesmal über das Menü den Punkt Textmarken auszuwählen, um zu einer bestimmten Textmarke springen zu können. Alternativ kann man sich für diesen Menüpunkt auch ein Tastenkürzel definieren, das dann dieses Dialogfenster öffnet.
Mit folgenden Makros werden alle Textmarken mit ihrem Namen in eine Auswahlliste geschrieben und können durch Auswahl in dieser Liste direkt im Text angesprungen werden. Insgesamt werden vier Makros verwendet, wobei zwei nur die Aufgabe haben eine zusätzliche Symbolleiste anzulegen ( TMarkMenue) und ggf. wieder zu löschen ( TMMenueloeschen). In die Symbolleiste wird, sofern noch nicht vorhanden, die Schaltfläche/Auswahlliste eingefügt und die Verknüpfung mit den Makros hergestellt.

Die Suche und Auflistung aller Textmarken erfolgt innerhalb des Makros  Textmarkensuchen.
In einer Schleife werden dazu alle Textmarken durchlaufen und in die Auswahlliste mit dem vergebenen Namen eingetragen. Die Funktion  TMarkAuswahl markiert die in der Auswahlliste ausgewählte Textmarke, so dass schnell zwischen den verschiedenen Textmarken im Dokument gewechselt werden kann.

Das temporäre Anlegen der Symbolleisten sorgt dafür, dass beim Beenden die Symbolleiste automatisch wieder gelöscht wird und keine Nachfrage zu Speichern angezeigt wird. Soll die Symbolleiste dauerhaft angezeigt und mitgespeichert werden, muss die Konstante temporary auf True gesetzt werden.

Option Explicit 
Dim cbar1 As CommandBar
Dim cbar1cb As CommandBarComboBox
Dim cbar1btn As CommandBarButton

Sub TMarkMenue() Dim bfound As Boolean ' Symbolleiste suchen und ggf. temporär anlegen For Each cbar1 In CommandBars If cbar1.Name = "MeineTextmarken" Then Set cbar1 = CommandBars("MeineTextmarken") bfound = True Exit For End If Next cbar1 If Not bfound Then Set cbar1 = CommandBars.Add(Name:="MeineTextmarken", _ Position:=msoBarTop, temporary:=True) End If cbar1.Visible = True ' Schaltlfäche hinzufügen Set cbar1btn = CommandBars("MeineTextmarken").FindControl( _ Type:=msoControlButton, _ ID:=CommandBars("Standard").Controls("Seitenansicht").ID) If cbar1btn Is Nothing Then Set cbar1btn = cbar1.Controls.Add(Type:=msoControlButton, _ ID:=CommandBars("Standard").Controls("Seitenansicht").ID, temporary:=True) cbar1btn.TooltipText = "Textmarken listen" End If cbar1btn.OnAction = "Textmarkensuchen" ' Auswahlliste hinzufügen Set cbar1cb = CommandBars("MeineTextmarken").FindControl( _ Type:=msoControlComboBox, ID:=1) If cbar1cb Is Nothing Then Set cbar1cb = cbar1.Controls.Add(Type:=msoControlComboBox, _ ID:=1, temporary:=True) cbar1cb.TooltipText = "Textmarke anzeigen" cbar1cb.Width = 150 End If cbar1cb.OnAction = "TMarkAuswahl" End Sub
Sub TMMenueloeschen() Set cbar1btn = CommandBars("MeineTextmarken").FindControl( _ Type:=msoControlButton, _ ID:=CommandBars("Standard").Controls("Seitenansicht").ID) cbar1btn.Delete Set cbar1cb = CommandBars("meineTextmarken").FindControl( _ Type:=msoControlComboBox, ID:=1) cbar1cb.Delete CommandBars("meineTextmarken").Delete Set cbar1btn = Nothing Set cbar1cb = Nothing Set cbar1 = Nothing End Sub
Sub Textmarkensuchen() Dim i, j As Integer Dim sTMLaenge As Integer Dim sTMark As Bookmark Dim rngTMark As Range Dim rngDoc As Range If Application.Documents.Count = 0 Then Exit Sub i = 0: j = 0 sTMLaenge = 0 TMarkMenue Set cbar1cb = CommandBars("MeineTextmarken").FindControl( _ Type:=msoControlComboBox, ID:=1) cbar1cb.Clear ActiveDocument.ActiveWindow.View.ShowFieldCodes = Fals Set rngDoc = ActiveDocument.Range rngDoc.WholeStory For Each sTMark In rngDoc.Bookmarks Set rngTMark = sTMark.Range cbar1cb.AddItem sTMark.Name If Len(sTMark.Name) > sTMLaenge Then sTMLaenge = Len( _ (sTMark.Name) i = i + 1 Next sTMark If Not i = 0 Then cbar1cb.ListIndex = 1 cbar1cb.Width = sTMLaenge * 6.5 + 5 End Sub
Function TMarkAuswahl() Dim gefunde As Boolean Set cbar1cb = CommandBars("MeineTextmarken").FindControl( _ Type:=msoControlComboBox,ID:=1) With cbar1cb ActiveDocument.Bookmarks(.ListIndex).Select End With 'weiter: End Function

 www.chf-online.de/vba/textmarken.htm © 2001-11 Christian Freßdorf (Zaphod-Systems)