Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textmarken anspringen .....

Textmarken anspringen .....
26.11.2006 17:18:51
Uwe
Hi,
ist zwar kein Excel sondern ein Word Problem, aber vielleicht fält jemand ein Makro ein:
Problem: Word Tabelle mit Lexikon, linke Spalte Begriff, rechte Spalte Definition. Es gibt nun in der rechten Spalte Querverweise mit * gekennzeichnet.
Beispiel: *Abakus kommt z.B. im Dokument mehrmals vor und soll auf die Textmarke Abakus verweisen
Lösung: *... mit den Textmarken vergleichen und verlinken.
Gruss,
Uwe

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textmarken anspringen .....
27.11.2006 00:03:51
fcs
Hallo Uwe,
hier eine Lösung
Gruss
Franz

Sub QuerverweisAufTextmarkeEinfügen()
' Wandelt das Wort hinter einem * in einen Querverweis auf die Textmarke gleichen Namens
On Error Resume Next 'Setzt Makro fort, wenn Wort nach Stern keiner Textmarke entspricht
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
' * Suchen
Do While .Execute(FindText:="*", Format:=False) = True
'Wort nach dem Stern markieren
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
'Wort durch Querverweis auf Textmarke ersetzen, wenn Wort = Text
Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
wdContentText, ReferenceItem:=Selection.Text, InsertAsHyperlink:=True, _
IncludePosition:=False
'Schleife beenden, wenn Selection am Textende
If Selection.Range.End = ActiveDocument.Range.End Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
End With
End Sub

Anzeige
AW: Textmarken anspringen .....
27.11.2006 11:42:09
Uwe
Hi,
funktioniert, allerdings stürzt Word nach ein paar Seiten ab - habe ein Dokument mit 1300 Seiten. Kann man da was dran machen?
Vielen Dank,
Uwe
AW: Textmarken anspringen .....
27.11.2006 15:48:52
fcs
Hallo Uwe,
keine Ahnung, warum Word aussteigt. Auch wenn 1300 Seiten ganz schön heftig sind.
Ob hier hier irgendwelche internen Grenzen von Word gesprengt werden (z.B. mögliche Anzahl der Querverweise)?
ggf. solltest du auch noch im Hintergrund ablaufende Aktivitäten wie
- Rechtschreibprüfung bei Eingabe
- Änderungen Nachverfolgen
deaktivieren.
Ich hab in das Makro noch regelmäßiges Speichern des Dokuments eingebaut (Alle 100 gefundenen Sternchen) und die Bildschirmaktualisierung während des Makros abgeschaltet. Ob es hilft?
Gruß
Franz

Sub QuerverweisAufTextmarkeEinfügen()
' Wandelt das Wort hinter einem * in einen Querverweis auf die Textmarke gleichen Namens
On Error Resume Next 'Setzt Makro fort, wenn Wort nach Stern keiner Textmarke entspricht
ActiveDocument.Save
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
' * Suchen
Zaehler = 0
Application.ScreenUpdating = False
Do While .Execute(FindText:="*", Format:=False) = True
'Wort nach dem Stern markieren
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
'Wort durch Querverweis auf Textmarke ersetzen, wenn Wort = Text
Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
wdContentText, ReferenceItem:=Selection.Text, InsertAsHyperlink:=True, _
IncludePosition:=False
'Schleife beenden, wenn Selection am Textende
If Selection.Range.End = ActiveDocument.Range.End Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1
Zaehler = Zaehler + 1
If Zaehler = 100 Then
ActiveDocument.Save
Zaehler = 0
End If
Loop
Application.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Textmarken anspringen .....
27.11.2006 18:27:21
Uwe
Hi,
danke - super! Aber lässt sich das noch lösen das die *... Einträge als Hyperlinks formatiert sind.
Danke,
Uwe
AW: Textmarken anspringen .....
28.11.2006 08:38:12
fcs
Hallo Uwe,
habe noch ein paar Zeilen zur Formatierung der gefundenen Einträge eingefügt und die Anweisung für Fehler angepasst.
Gruss
Franz

Sub QuerverweisAufTextmarkeEinfügen()
' Wandelt das Wort hinter einem * in einen Querverweis auf die Textmarke gleichen Namens
On Error GoTo Weiter1 'Setzt Makro fort, wenn Wort nach Stern keiner Textmarke entspricht
ActiveDocument.Save
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
' * Suchen
Zaehler = 0
Application.ScreenUpdating = False
Do While .Execute(FindText:="*", Format:=False) = True
'Wort nach dem Stern markieren
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
'Wort durch Querverweis auf Textmarke ersetzen, wenn Wort = Text
Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
wdContentText, ReferenceItem:=Selection.Text, InsertAsHyperlink:=True, _
IncludePosition:=False
'Querverweis formatieren (blau, unterstrichen)
Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Font.ColorIndex = wdBlue
Selection.Font.Underline = wdUnderlineSingle
Weiter1:
'Schleife beenden, wenn Selection am Textende
If Selection.Range.End = ActiveDocument.Range.End Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1
Zaehler = Zaehler + 1
If Zaehler = 100 Then
ActiveDocument.Save
Zaehler = 0
End If
Loop
Application.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Textmarken anspringen .....
28.11.2006 09:25:34
Uwe
És kommt ein Laufzeitfehler 4196 - beim Debug sind folgende Zeilen gelb markiert:
Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
wdContentText, ReferenceItem:=Selection.Text, InsertAsHyperlink:=True, _
IncludePosition:=False
AW: Textmarken anspringen .....
28.11.2006 14:17:50
fcs
Hallo Uwe,
scheinbar funktioniert das Abfangen eines Fehlers nach den zusätzlichen Zeilen nicht mehr korrekt.
Ich hatte in meiner Testdatei nur einen Fehler eingebaut, da klappt es noch. Treten nacheinander mehrere Fehler bei der Zuweisung des Links auf eine Textmarke auf, dann bricht das Makro ab.
Ich habs jetzt so abgeändert, dass immer das Wort hinter einem Stern mit den Namen aller vorhandenen Textmarken verglichen wird und bei Übereinstimmumg erfolgt die Umwandlung in einen Link und die Formatierung. So war zwar auch meine ursprüngliche Idee gewesen, aber nachdem es mit der einfachen Fehlerroutine funktionierte hab ich es dann doch nicht gemacht.
Schon erstaunlich wie sich eine kleine Prozedur mit ein paar Zusatzwünschen verändern muss.
Gruß
Franz

Sub QuerverweisAufTextmarkeEinfügen()
' Wandelt das Wort hinter einem * in einen Querverweis auf die Textmarke gleichen Namens
Dim Zaehler As Long, Textmarke As Bookmark
ActiveDocument.Save
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
' * Suchen
Zaehler = 0
Application.ScreenUpdating = False
Do While .Execute(FindText:="*", Format:=False) = True
'Wort nach dem Stern markieren
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
If Selection.Type <> wdSelectionColumn Then 'nicht nur ein Stern steht in Zelle
'Wort durch Querverweis auf Textmarke ersetzen, wenn Wort = Text
For Each Textmarke In ActiveDocument.Bookmarks
If Textmarke.Name = Selection.Text Then
Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
wdContentText, ReferenceItem:=Selection.Text, InsertAsHyperlink:=True, _
IncludePosition:=False
'Querverweis formatieren (blau, unterstrichen)
Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Font.ColorIndex = wdBlue
Selection.Font.Underline = wdUnderlineSingle
Exit For
End If
Next Textmarke
End If
'Schleife beenden, wenn Selection am Textende
If Selection.Range.End = ActiveDocument.Range.End Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1
Zaehler = Zaehler + 1
If Zaehler = 100 Then
ActiveDocument.Save
Zaehler = 0
End If
Loop
Application.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Textmarken anspringen .....
28.11.2006 16:35:18
Uwe
Hi,
ich denke du hast dir eine Nikolaus-Überraschung verdient wenn es funktioniert :-)
Habe noch zwei Sachen:
- die gefundenen Sachen werden mit {REF ... referenziert, ich hätte gerne nur einen normalen Hyperlink.
- es werden nur Worte gefunden, die in Klammern stehen oder ein Satzendezeichen haben, keines das im Satz steht und nach dem Wort ein Leerzeichen hat.
Wenn du das noch hinbekommst dann brauch ich deine Adresse ;-)
Gruss,
Uwe
AW: Textmarken anspringen .....
28.11.2006 17:52:38
fcs
Hallo Uwe,
beide Wünsche konnte ich umsetzen.
Hier die neue Version
Für Kontakt:
Unter Forumsseiten--Profile--Profilliste findest du meine e-mail-adresse unter fcs
Gruß
Franz

Sub HyperlinkAufTextmarkeEinfügen()
' Wandelt das Wort hinter einem * in einen Hyperlink auf die Textmarke gleichen Namens um
Dim Zaehler As Long, Textmarke As Bookmark, strText As String
ActiveDocument.Save
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
' * Suchen
Zaehler = 0
Application.ScreenUpdating = False
Do While .Execute(FindText:="*", Format:=False) = True
'Wort nach dem Stern markieren
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
If Selection.Type <> wdSelectionColumn Then 'nicht nur ein Stern steht in Zelle
'Wort durch Hyperlink auf Textmarke ersetzen, wenn Wort = Text
strText = Trim(Selection.Text) 'Leerzeichen am Anfang/Ende entfernen
If Right(Selection.Text, 1) = " " Then
Blank = " " 'Leerzeichen
Else
Blank = ""'kein Leerzeichen
End If
For Each Textmarke In ActiveDocument.Bookmarks
If Textmarke.Name = strText Then
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", _
SubAddress:=strText, ScreenTip:="", TextToDisplay:=strText
Selection.TypeText Text:=Blank 'Leerzeichen hinter Wort ggf. wieder einfügen
Exit For
End If
Next Textmarke
End If
'Schleife beenden, wenn Selection am Textende
If Selection.Range.End = ActiveDocument.Range.End Then Exit Do
Selection.MoveRight Unit:=wdCharacter, Count:=1
Zaehler = Zaehler + 1
If Zaehler = 100 Then
ActiveDocument.Save
Zaehler = 0
End If
Loop
Application.ScreenUpdating = True
End With
End Sub

Anzeige
AW: Textmarken anspringen .....
28.11.2006 19:23:44
Uwe
Super .... wandelt der die bestehenden Referenzierungen in Hyperlinks um oder muss ich die manuell entfernen?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige