Eckige Klammern und automatische Nummerierung in WORD?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hallo,

das kann man relativ einfach mit einem Makro erledigen, z. B. dem folgenden.

Sub KlammernSetzen()

    Dim rngAuswahl As Range

    InSelection = False
    
    'Prüft, ob Auswahl vorhanden
    If Selection.Type = wdSelectionIP Then
        InSelection = True
        MsgBox "Sie müssen eine Auswahl treffen.", vbCritical + vbOKOnly, "Keine Auswahl vorhanden"
        Exit Sub
    Else
        Set rngAuswahl = Selection.Range 'Speichert die aktuelle Auswahl
        With Selection
            .Collapse
            .TypeText Text:="["
            rngAuswahl.Select
            .Collapse Direction:=wdCollapseEnd
            .TypeText Text:="]"
            .Font.Subscript = True
            .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
                "SEQ  TiefgestellteZiffer", PreserveFormatting:=True
            .Font.Subscript = False
            .TypeText Text:=Space(1)
        End With
        Set rngAuswahl = Nothing 'Löscht die gespeicherte Auswahl wieder
        ActiveDocument.Fields.Update 'Aktualisiert alle Felder
    End If
    
End Sub

Wichtig: Ich habe das Makro selbst programmiert und getestet, allerdings erfolgt die Nutzung des Makros vollkommen auf eigene Gefahr! Ich übernehme keinerlei Haftung für jedwede Schäden, die möglicherweise aus der Verwendung des Makros entstehen.

Dem Makro eine Tastenkombination zuweisen

Um dem Makro eine Tastenkombination zuzuweisen, klicke auf Datei Optionen und wähle dann im rechten Bereich Menüband anpassen.

Wähle dann im rechten Bereich unten bei Tastenkombinationen den Befehl Anpassen...

Im sich öffnenden Fenster Tastatur anpassen scrollst du in der linken Liste Kategorien runter bis du Makros anwählen kannst.

Wähle dann im rechten Fenster Befehle das Makro KlammernSetzen aus.

Positioniere deinen Cursor jetzt im Feld Neue Tastenkombination und drücke Strg + eine andere Taste.

Wichtig

Wenn du hier eine Tastenkombination einstellst, die bereits vergeben ist, z. B. Strg + C, erscheint links unterhalb des weißen leeren Feldes die Meldung Derzeit zugewiesen an: BearbeitenKopieren oder eben der Name des entsprechenden Befehls, der bereits an diese Tastenkombination vergeben ist. Drücke in diesem Fall nicht auf Zuordnen, denn dann würdest du die bereits existierende Tastenkombination überschreiben, und damit wirst du nicht glücklich, glaub mir!

Lösche in diesem Fall die Tastenkombination aus dem Feld Neue Tastenkombination und drücke wieder Strg + eine andere Taste. Hast du eine Tastenkombination eingestellt, die noch nicht belegt ist, erscheint unterhalb des linken weißen Kastens die Meldung: Derzeit zugewiesen an: [nicht zugewiesen].

In diesem Fall kannst du links unten auf Zuordnen klicken und die eingestellte Tastenkombination wird dem Makro zugewiesen.

Dann kannst du alle Fenster schließen. Wenn du jetzt die Tastenkombination benutzt, die du für das Makro eingestellt hast, wird das Makro ausgelöst und sollte deinen ausgewählten Text in eckige Klammern setzen und eine tiefergestellte, sich selbst hochzählende Zahl, dahinter setzen. Außerdem wird noch ein Leerzeichen hinter die tiefergestellte Zahl gesetzt.

Übrigens: Wenn du Word jetzt beendest, kann es sein, dass eine Meldung erscheint, die dir sagt, dass die durchgeführten Änderungen Auswirkungen auf die Dokumentvorlage Normal haben, und dich fragt, ob du die Änderungen speichern willst. Hier musst du die Änderungen unbedingt speichern, sonst ist alles, was du eben eingestellt hast, beim nächsten Start von Word nicht mehr vorhanden, und du müsstest es nochmal einstellen.

Ich hoffe, das ist das, was du wolltest. Eine Rückmeldung wäre nett und melde dich bitte bei Fragen! Und falls ich das Makro noch ein wenig umprogrammieren soll, einfach melden. Solange es nicht zu viele Umstände macht, mache ich das gerne ;-)

Gruß, BerchGerch

Woher ich das weiß:eigene Erfahrung – Ich arbeite seit 25 Jahren nahezu täglich mit Word.

Hallo,

ich habe mein Makro noch ein klein wenig umgeschrieben. Jetzt funktioniert es auch, wenn das letzte Zeichen deiner Auswahl ein Leerzeichen ist:

Sub KlammernSetzen()

    InSelection = False
    
    'Prüft, ob Auswahl vorhanden
    If Selection.Type = wdSelectionIP Then
        InSelection = True
        MsgBox "Sie müssen erst eine Auswahl treffen.", vbExclamation + vbOKOnly, "Keine Auswahl vorhanden"
        Exit Sub
    Else
        ActiveDocument.Bookmarks.Add Name:="BMAuswahl", Range:=Selection.Range 'Speichert die aktuelle Auswahl
        With Selection
            .Collapse
            .TypeText Text:="["
            ActiveDocument.Bookmarks("BMAuswahl").Range.Select
            .Collapse Direction:=wdCollapseEnd
            .TypeText Text:="] "
            .MoveLeft Unit:=1, Count:=1
            .Font.Subscript = True
            .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
                "SEQ  TiefgestellteZiffer", PreserveFormatting:=True
            .MoveRight Unit:=1, Count:=1
        End With
        ActiveDocument.Bookmarks("BMAuswahl").Delete 'Löscht die gespeicherte Auswahl wieder
        ActiveDocument.Fields.Update 'Aktualisiert alle Felder
    End If
    
End Sub

Gruß, BerchGerch

Woher ich das weiß:eigene Erfahrung – Ich arbeite seit 25 Jahren nahezu täglich mit Word.
yamijugu 
Fragesteller
 28.01.2018, 12:01

WOW! Wahnsinn dass du dir die Mühe machst. Das habe ich nicht erwartet. Tausend Dank! Ich probiere es gleich aus,

0
yamijugu 
Fragesteller
 28.01.2018, 12:12

Es funktioniert! Tausend Dank! Das erleichtert mir meine Arbeit unendlich!

Eine Frage noch: Ist es noch möglich innerhalb eines Dokumentes nochmal bei 1 anzufangen? Also ich habe verschiedene Texte in einem Dokument. Und bei jedem Text muss ich wieder bei 1 Anfangen. Kann ich da irgendwie eine Markierung oder so setzen damit das Makro von vorne anfängt?

0
yamijugu 
Fragesteller
 28.01.2018, 12:31

Also so wie das Makro hier ist, ist es wirklich schon eine Riesenhilfe! (Nochmals tausend Dank!), aber ich darf ja weiter fragen, also nutze ich das mal noch. Und zwar müssen alle Ziffern dann noch in eine Excel Tabelle eingeschleust werden, wo dann noch weitere Infos dazukommen. Ist das auch irgendwie möglich, dass daraus eine automatische Tabelle erstellt wird?

Vielleicht noch kurz eine nähere Beschreibung meines Word Dokument. Das ganze heißt zB "LB". Innerhalb LB gibt es dann 10 Texte. LB-R1, LB-R2, LB-R3 usw. Und innerhalb dieser Texte werden dann die Objekte beziffert. also in LB-R1 von 1-12, in LB-R2 von 1 bis 23, in LB-R3 von 1 bis 5 oder so, je nachdem wie viele Objekte zu finden sind.

0
BerchGerch  28.01.2018, 13:50
@yamijugu

Hallo,

der Marker für die Ziffernzählung im Makro ist die Passage:

"SEQ TiefgestellteZiffer"

SEQ steht hierbei für ein Sequenzfeld, das automatisch hochgezählt wird. TiefgestellteZiffer ist sozusagen der Name der Sequenzgruppe. Wenn du diesen Namen veränderst, fängt die Zählung wieder von vorne (also bei 1) an, und es werden immer nur die Sequenzfelder der Reihe nach hochgezählt, die zu einer Sequenzgruppe gehören.

Das heißt: Verändere einfach das TiefgestellteZiffer im Makrocode in einen beliebigen anderen Namen (ohne dabei die Anführungszeichen zu löschen!), wenn du mit einer neuen Zählung beginnen willst. Der Name darf allerdings keine Leerzeichen enthalten. Auf diese Weise kannst du mit dem Makro mehrere Sequenzgruppen erstellen.

Beispiel: Verändere im obigen Code einfach das "SEQ TiefgestellteZiffer" in "SEQ Sequenzgruppe1" und schon hast du eine weitere Sequenzgruppe erstellt.

Zu deiner Frage mit der Exceltabelle: Theoretisch ist das über VBA sicher ebenso möglich – glaube ich zumindest –, aber erstens ist dazu erheblich mehr Programmieraufwand nötig, als beim obigen Code, und zweitens übersteigt das ehrlich gesagt meine Programmierkenntnisse in VBA. Ich habe bisher immer nur mit VBA in Word programmiert (meistens jedenfalls). Du willst Daten aus Word auslesen und an Excel übergeben, wenn ich dich richtig verstanden habe. Das geht zwar per VBA, aber wie das geht, weiß ich leider nicht, also kann ich dir hier leider nicht mehr helfen.

Viele Grüße, BerchGerch

0
BerchGerch  28.01.2018, 15:12
@BerchGerch Nachtrag

Ach, wenn du schon dabei bist, das Makro umzuschreiben, kannst du auch gleich die beiden Zeilen

.MoveLeft Unit:=1, Count:=1

und

.MoveRight Unit:=1, Count:=1

in

.MoveLeft Unit:=wdCharacter, Count:=1

bzw.

.MoveRight Unit:=wdCharacter, Count:=1

umschreiben, also einfach die 1 hinter Unit:= jeweils durch wdCharacter ersetzen.

Ich habe keine Ahnung, wie die 1 dahin gekommen ist, aber die hat da bei Unit eigentlich nichts verloren. Das muss Unit:=wdCharacter heißen. Wundert mich, dass das Makro trotzdem geht.

Gruß, BerchGerch

0
yamijugu 
Fragesteller
 02.02.2018, 09:46
@BerchGerch

Hallo,

ich habe die Kommentare hier irgendwie erst nicht gesehen, deswegen dachte ich, du siehst meine Fragen/Kommentare hier nicht, deshalb die neue Frage, tut mir leid. Vielen Dank wieder für die Antwort, ich werde es direkt ausprobieren!

0