MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 23.02.2018, 10:22   #1
XX5198
MOF User
MOF User
Standard VBA - Ref-Links neu verbinden

Hallo zusammen,

zunächst habe ich folgendes Vorhaben:
Und zwar sollen unsere Vorlagen zu einzelnen Textbausteinen umgebaut werden. Es kommt hier natürlich vor, dass am Anfang des Dokuments auf eine Tabelle am Ende des Dokuments verwiesen wird. Wenn ich diese Abschnitte in einzelne Textbausteine lege wird es hier irgendwann zu einem defekten Verweis kommen.

Daher möchte ich vorab gerne alle Verweise durchlaufen und z.B. eine Textmarke setzten, mit der ich mir merke, dass Verweis X zu Tabelle X gehört.

Wie ich die Verweise aufliste weiß ich schon:
Code:

    Dim i As Integer
    
    For i = 1 To ActiveDocument.Range.Fields.Count
        With ActiveDocument.Range.Fields.Item(i)
            If .Type = 3 Then
                Debug.Print .Code
            End If
        End With
    Next i
Da kommt dann z.B. so was bei raus: " REF _Ref507144693 h "
Mir sagt das aber leider nicht, dass "Ref507144693" zu Tabelle 5 ehört.
Das Feld der Tabelle sieht leider nur so aus: "Tabelle {STYLEREF 1 s}-{SEQ Tabelle * ARABIC s 1}", woraus ich nicht auf "Ref507144693" schließen kann.

Daher meine Frage wie finde ich die passende Tabellenbeschrftung zu "Ref507144693"?

Wenn ich dies gefunden habe würde ich z.B. eine eindeutige Textmarke oder ein Inhaltssteuerelement setzten und sie eindeutig beschriften. Fügt man (per Makro) diese beiden Textbausteine später ein könnte ein Makro die Verlinkung entsprechend wieder herstellen.

Vielen Dank schon mal.

__________________

Gruß
Andreas

Geändert von XX5198 (23.02.2018 um 11:04 Uhr). Grund: Fehlerkorrektur
XX5198 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2018, 11:38   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Andreas,

wenn du beim Erstellen dieser automatischen REF-Felder angegeben hast: Verweisen auf Gesamte Beschriftung oder Nur Beschriftungstext, liefern sie dir doch die gesamte oder einen Teil der Tabellenbeschriftung. Diese kannst du im Makro dann so auslesen:
Code:

Sub querverweise()
 Dim i As Integer
    
    For i = 1 To ActiveDocument.Range.Fields.Count
        With ActiveDocument.Range.Fields.Item(i)
            
                'nur diese spezielle Sorte Querverweise beachten:
                If .Code Like " REF _Ref*" Then
                Debug.Print "Querverweis " & i & ": Code " & .Code & ", verweist auf: " & .Result
            End If
        End With
    Next i
End Sub

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2018, 12:09   #3
XX5198
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Gerhard,

vielen Dank für deine Antwort.

Ich denke dein Code wird mir schon gut weiter helfen, jedoch ist das noch nicht ganz was ich suche:
Wenn ich ein
Code:

.result.select
mache, dann wird der jeweilige Link markiert (z.B. Tabelle 23).
Ich möchte aber die Beschriftung der Tabelle 23 finden und z.B. eine Textmarke setzen um bei Bedarf später den Verweis auf diese Tabellenbeschriftung zu erneuern.
Vielleicht denke ich auch zu kompliziert?

Als Beispiel habe ich mal ein Word-Dokument hoch geladen.
Auf Seite 1 ist eine Tabelle mit einer Beschritung enthalten. Auf Seite 2 ist auf selbige ein Verweis gesetzt. Bei der zweiten Seite könnte es sich jetzt um einen Textbaustein handeln, der einen defekten Verweis enthält weil die Textbausteine hin und her kopiert wurden o.a. Diesen möchte ich nun gerne reparieren bzw. zuvor eine Textmarke setzten.
Ich müsste also bei der Beschriftung auf Seite 1 eine Textmarke setzten, die ich für den Verweis auf Seite 2 als Ziel nutzen kann.
Angehängte Dateien
Dateityp: docx Test Verweise.docx (16,2 KB, 3x aufgerufen)

__________________

Gruß
Andreas
XX5198 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 23.02.2018, 18:32   #4
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Andreas,

mal sehen, ob ich es jetzt besser verstanden habe.

Das Makro im angehängten Musterdokument erstellt zu jedem Querverweis auf eine Tabelle eine Textmarke um sein Verweisziel rum (also um die Tabellen-Beschriftung).
Es geht davon aus, dass die Querverweise, wie in deinem Beispiel, nur Beschriftungsnummer und Kategorie anzeigen, wohingegen die Beschriftungen selber auch weiteren Text haben dürfen.
Angehängte Dateien
Dateityp: docm Test2Verweise.docm (27,2 KB, 2x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 26.02.2018, 07:03   #5
XX5198
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Gerhard,

also dein Makro macht genau das, was ich mir vorgestellt hab.
Ich hatte lediglich gedacht, dass man über die Nummer in "REF _Ref507176818" auf das Ziel schließen könnte oder was fängt Word damit an?

Es gibt z.B. auch Dokumente, in denen nicht nach Tabelle 1, 2 und 3, sondern nach Tabelle 1-1, 1-2 und 1-3, also nach Kapitel-Nummer beschriftet wird. Bei dem ".result" kommt dann z.B. Tabelle 11 heraus. Wie ich das Muster anpasse weiß ich, jedoch muss ich da dann natürlich eine Fallunterscheidung machen. Geht es wirkich nur mit Suchen/finden oder kann man doch irgendie über die Ref-Nummer auf das Ziel schließen?
Mein Gedanke war, dass bei der Tabellen-Beschriftung irgendwo ein Gegenstück zu o.g. Ref-Nummer zu finden wäre. Aber es sieht ja danach aus als ob es keine andere Möglichkeit als die Such-Methode nach "Tabelle X" gäbe.

Wenn du oder jemand anderes noch etwas dazu weiß immer her damit

Danke noch mal.

Update:
Ich habe gerade festgestellt, dass die Ref-Nummern bei den Textmarken unter "ausgebelendete Textmarken" auftauchen.
Wie folgt kann ich danach suchen und den Range ermitteln:
Code:

    Dim rngTextmarke As Bookmark
    
    For Each rngTextmarke In ActiveDocument.Range.Bookmarks
        if rngTextmarke.Name like "*_Ref*" then
            Debug.Print rngTextmarke.Name
            rngTextmarke.Select
        end if
    Next
Ich kann jetzt wie im Beispiel von Gerhard die Felder in einer Schleife durchlaufen und dannin den Bookmarks nach der jew. Ref-Nummer suchen um das Ziel zu "identifizieren".
Es scheint aber so, dass jede Beschriftung neben der im Link enthaltenen Ref-Nummer noch 1-2 weitere Ref-Nummern hat, wo ich die Funktion noch nicht versrehe...

Update 2:
Über
Code:

ActiveDocument.Range.Fields.item(i).result.Bookmarks.Item(1).Range
Kann ich auch direkt alle Textmarken, die mit dem Link zu tun haben auflisten, muss also nicht alle anderen Textmarken durchlaufen

__________________

Gruß
Andreas

Geändert von XX5198 (26.02.2018 um 08:44 Uhr). Grund: Update2
XX5198 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:03 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.