Eckige Klammern und automatische Nummerierung in WORD?
Hallo,
für meine Masterarbeit in einem linguistischen Thema muss ich innerhalb eines Textes mehrere Objekte Klammern und durchnummerieren:
z.B.: Das ist [ein Fließtext]1. Und das hier ist auch [einer]2. Ich schreibe noch einen dritten]3.
Es dauert zu lange es händisch zu machen, zumal ich manchmal doch noch ein Objekt entdecke und alles nochmal nummerieren muss. Hat jemand eine Idee wie ich das vereinfachen kann? Stell es mir so vor: ich markiere den gewünschten Text, drücke ne Taste und um die Markierung kommen die Klammern und eine tiefgestellte Zahl die mit jeder Markierung um 1 größer wird.
2 Antworten
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 zuweisenUm 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.
WichtigWenn 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
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
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
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
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!
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?
WOW! Wahnsinn dass du dir die Mühe machst. Das habe ich nicht erwartet. Tausend Dank! Ich probiere es gleich aus,
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.