2
www.ChF-Online.de  

Lesezeichen verwenden

   Neuigkeiten
   API-Aufrufe in VBA
   VBA2HTML
   Word
   Word-VBA
aktiv aktiv Verschiedenes
 Dateiname ohne Endung
 Dokumentstrukturanzeige
 Fenster anordnen
 Fensterliste
 Fensterliste (II)
 Kalender erstellen
 Kommentarinformationen
aktiv  Lesezeichen
 Beliebigen Ordner öffnen
 Position der Einfügemarke
 Seitenanfang/-ende
 Shapes ansprechen
 Sicherheitskopien erstellen
 Word-Startparameter
 Word-Startparameter II
 Startordner "Bild einfügen"
 Tags finden u. bearbeiten
 Tags finden/bearbeiten (II)
 Text2WordArt
 Textbausteine verwenden
 Textmarken (I)
 Textmarken (II)
 Überschrift zu Textmarke
 VBA-Konverter
 Wasserzeichen
 Zeichen tauschen
 Feld-Arbeiten
 Form-Sachen
 Menü-/Symbolleisten
 VBA und Lotus Notes
 VBA und Mail
 Inside VBAIDE
 Von Word nach Outlook
 Fix-und-Fertiges/Projekte
   Word2007 (RibbonX)
   Word2010 (RibbonX)
   Outlook-VBA
   Links zu VB(A)
   DocToHelp
   Netport Express XL
   Astronomie
   Gästebuch
   Volltextsuche
   Sitemap
   Buch:Word-Programmierung
   Impressum & Kontakt
   Datenschutzerklärung
Getestet unter Word97Getestet unter Word2000  
Makro/Datei speichern
Print

In der VBA-IDE gibt es die praktischen Lesezeichen, zum schnelleren Navigieren zwischen verschiedenen Zeilen. Diese Lesezeichen sind besonders bei umfangreichen Makros/Projekten hilfreich, wenn z.B. verschiedene Stellen verglichen werden sollen.

Setzen&Entfernen/Nächstes/Vorheriges/Alle Löschen

In Word existieren diese Lesezeichen nicht direkt und der Umweg über manuelle Textmarken ist nicht wirklich praktisch. Mit Hilfe einiger Makros lässt sich diese Funktionalität aber auch in Word-Dokumente einbinden.
Die verwendeten Makros arbeiten dabei folgendermaßen:

  • Prüfen, ob in der aktuellen Zeile bereits ein Lesezeichen gesetzt ist,
  • Ist bereits ein Lesezeichen gesetzt, wird dieses gelöscht,
  • Neues Lesezeichen setzen, dazu
    • Bild über den Text liegend einfügen
    • Bild mit der aktuellen Zeile verankern
    • Textmarke zusammen mit Seitenzahl und Zeilenzahl generieren
    • Textmarke einfügen
  • Navigation zwischen den Lesezeichen:
    • Range-Bereich von der aktuellen Position bis zum Textende/Textanfang festlegen
    • Range-Bereich auf Textmarken prüfen
    • Nächste Textmarke auf Aufbau prüfen
    • ggf. zur Textmarke springen
  • Alle Lesezeichen löschen:
    • Alle Textmarken auf Aufbau prüfen und ggf. löschen
    • Zum Lesezeichen gehörendes Bild löschen

Der folgende Auszug aus dem zur Verfügung stehenden Modul setzt ein neues Lesezeichen, sofern noch kein Lesezeichen vorhanden ist.
Wichtig dabei ist, dass der Pfad zum Lesezeichen-Symbol im Makro korrekt gesetzt ist!

Sub MarkeSetzen()  
Dim i, j As Integer 
Dim sFilename, sTMName As String 
On Error GoTo ende
' Bereits eine Marke vorhanden?  
If Not MarkeLoeschen Then 
' Pfad zum Lesezeichen-Symbol. Ggf. anpassen
  ChangeFileOpenDirectory "D:\Lesezeichen\"
  sFilename = "D:\Lesezeichen\set.gif"
  Set shp = ActiveDocument.Shapes.AddPicture(FileName:=sFilename, _
    LinkToFile:=False, SaveWithDocument:=True, Anchor:=Selection.Range)
  'Bild positionieren  
  PositionierenMarke
  'Textmarke und Bild setzen  
  If Len(Selection.Range.Text) > 0 Then 
    Selection.Range.Collapse Direction:=wdCollapseEnd 
  End If 
  sTMName = "_TM_" & Selection.Information(wdActiveEndAdjustedPageNumber) & _
    Selection.Information(wdFirstCharacterLineNumber)
  Selection.Bookmarks.Add Name:=sTMName, Range:=Selection.Range
End If 
ende:
End Sub 

Mit dem Funktionaufruf  MarkeLoeschen wird geprüft, ob an der aktuellen Position bereits ein Lesezeichen gesetzt ist. Ist dieses der Fall, wird das vorhandene Lesezeichen gelöscht und die Funktion liefert als Ergebnis TRUE zurück. Dieser Rückgabewert wird ausgewertet und nur für den Fall, dass er den Wert FALSE besitzt, wird das Lesezeichen gesetzt.

Function MarkeLoeschen() As Boolean  
Dim i, j, sLine, bLine As Integer
Dim sTrange As Range
Dim myMarke As Bookmark 
Dim sName As String 
MarkeLoeschen = False 
  ActiveDocument.Bookmarks.ShowHidden = True 
  ActiveDocument.Bookmarks.DefaultSorting = wdSortByLocation 
  If Selection.Bookmarks.Count > 0 Then 
    Set sTrange = Selection.Paragraphs(1).Range
      sLine = Selection.Information(wdFirstCharacterLineNumber)
      For Each myMarke In Selection.Bookmarks
        bLine = myMarke.Range.Information(wdFirstCharacterLineNumber)
        sName = myMarke.Name
        If (sName Like "_TM*") And (sLine = bLine) Then 
          Set shp = sTrange.ShapeRange(1)
          ActiveDocument.Bookmarks(sName).Delete
          shp.Delete
          MarkeLoeschen = True 
          Exit For 
        End If 
      Next myMarke
  End If 
End Function 

Das vollständige Modul mit allen Makros und den Symbolen befindet sich in der Download-Datei. In dem Modul ist auch ein Installationsmakro (SymInstall) zur Erstellung der Symbolleiste. Bei der Installation muss der Pfad zu den mitgelieferten Symbolen angegeben werden.


 Besucher: 0 online  |  0 heute  |  0 diesen Monat  |  2199797 insgesamt | Seitenaufrufe: 36   Letzte Änderung: 24.06.2006 © 2001-18 Christian Freßdorf
  Es gibt kaum eine größere Enttäuschung, als wenn du mit einer recht großen Freude im Herzen zu gleichgültigen Menschen kommst.
Christian Morgenstern
 powered by phpCMS and PAX