Einrückungen durch Aufzählung ersetzen

Hallo,

in Word-Dateien habe ich Auflistungen, die nicht über die Auflistungs-Funktion erstellt wurden, sondern über das Voranstellen eines Symbolzeichens mit der Feldfunktion
SYMBOL 183 \f „Symbol“
und teilweise zusätzlicher Vergrößerung des Einzugs.
Nun haben die Feldfunktionen von Word bekanntermaßen den Nachteil, daß sie zu anderen Anwendungen und Dateiformaten im Regelfall nicht kompatibel sind bzw. bei der Konvertierung in ein anderes Dateiformat verloren gehen.

Ich möchte daher die Auflistungen ändern, und zwar in einer der beiden folgenden Weisen:
Variante A: Symbol-Feldfunktion suchen und durch Symbol (Font=„Symbol“, CharacterNumber="-3913" bzw. Zeichencode = „183“) ersetzen. Also die Feldfunktion löschen und an ihrer Stelle das von ihr dargestellte Symbol einfügen.
Variante B (eleganter): Symbol-Feldfunktion suchen und entfernen und auf den Absatz anschließend „Format - Aufzählungszeichen“ anwenden.

Wie läßt sich mit einem VBA-Makro eine Feldfunktion durch regulären Text ersetzen bzw. wie läßt sich mit einem VBA-Makro ein Aufzählungsformat auf einen Absatz anwenden?

Ich freue mich über jeden zweckdienlichen Hinweis!

Gruß
Björn

hi Björn

es muss nicht immer ein makro sein:

angenommen, das sonderzeichen, dass du für die einrückung verwendet hast, hat den unicode 1234. danach kommt vermutlich ein tabulator.

  1. schritt: suchen und ersetzen
    suchen nach: ^u1234^t
    ersetzen durch: , button „erweitern“ klicken, unten auf „format“ klicken, „formatvorlage“ auswählen und dann die formatvorlage „aufzählungszeichen“ auswählen
    alles ersetzen

  2. schritt: den selben dialog nochmal aufrufen, ins ersetzen-durch-feld gehen und unten auf „keine formatierung“ klicken.
    alles ersetzen

word ist leider etwas blöd - es kann in einem arbeitsschritt offenbar nur entweder eine formatierung oder einen text ersetzen, nicht beides. im ersten schritt formatierst du alle absätze, die deine aufzählungszeichen beinhalten, mit dem absatzformat für aufzählungen. dabei bleibt dein aufzählungszeichen allerdings im text drinnen. im zweiten schritt löscht du dann deine aufzählungszeichen aus dem text raus.

alles klar?
lg
erwin

Hi Erwin,

danke für den Hinweis, aber leider scheint er in der Weise nicht mit Feldfunktionen zu funktionieren (die Aufzählungszeichen sind über eine Feldfunktion realisiert, eine Suche nach dem Unicode funktioniert daher leider nicht). Aber vielleicht kann ich das zumindest als Grundlage verwenden :wink:

Gruß
Björn

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi Björn

vielleicht hilft es ja etwas:
feld mit sonderzeichen markieren, kopieren, bearbeiten->inhalte einfügen->unformatierter text

aus deinen feld müsste nun ein echtes sonderzeichen geworden sein. nun müsstest du mit suchen-und-ersetzen die zeichen löschen können.

alternativ dazu ein kleines makro:

Sub symbol2text()
Dim Feld As Field

For Each Feld In ActiveDocument.Fields
 If Feld.Type = wdFieldSymbol Then
 Feld.Select
 Feld.Copy
 Selection.PasteSpecial Link:=False, DataType:=wdPasteText, Placement:= \_
 wdInLine, DisplayAsIcon:=False
 End If
Next
End Sub

damit sind alle felder automatisch echter text. sollte in zukunft weniger probleme geben…

lg
erwin

Hallo Erwin,

danke, damit ist mein Problem schon halb gelöst.
Optimal wäre es, wenn das durch eine Feldfunktion generierte Aufzählungszeichen nicht nur durch ein Symbol, sondern der entsprechende Absatz durch eine echte Aufzählung ersetzt würde. In einem Forum nannte man mir hierfür das nachfolgende Makro:

Sub Test()
 Dim Feld As Field
 i = 0
 Application.ScreenUpdating = False
 For Each Feld In ActiveDocument.Fields
 If Feld.Type = wdFieldSymbol Then
 i = i + 1
 oField.Code.Paragraphs(1).Style = "aufzählung"
 Feld.Delete
 End If
 Next
 Application.ScreenUpdating = True
 MsgBox "Es wurden " & i & " Symbolfelder gelöscht.", vbInformation
End Sub

„aufzählung“ ist hierbei durch die entsprechende VBA-Bezeichnung zu ersetzen - leider blieb eine diesbezügliche Suche bei Google bislang erfolglos. Vielleicht weiß ja irgendjemand, wie der korrekte Begriff lautet.

Gruß
Björn

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hi Björn

Sub Test()
Dim Feld As Field
i = 0
Application.ScreenUpdating = False
For Each Feld In ActiveDocument.Fields
If Feld.Type = wdFieldSymbol Then
i = i + 1
oField.Code.Paragraphs(1).Style = „aufzählung“
Feld.Delete
End If
Next
Application.ScreenUpdating = True
MsgBox „Es wurden " & i & " Symbolfelder gelöscht.“,
vbInformation
End Sub

„aufzählung“ ist hierbei durch die entsprechende
VBA-Bezeichnung zu ersetzen - leider blieb eine diesbezügliche

kein wunder, dass deine suche erfolglos war.

  1. in der zeile muss es feld.code… und nicht oField.code lauten

  2. der eigenschaft „style“ eines range-objekts (und die paragraph.funktion liefert genau sowas zurück) weist man den namen des styles zu, den der range annehmen soll. unter word 2003 ist standardmässig das style „aufzählungszeichen“ definiert, dass du verwenden kannst.

(style = druckformatvorlage, style ist aber kürzer)

lg
erwin

Hallo Erwin,

danke für den Hinweis. Zumindest das mit „Feld.Code“ hätte ich ja nun eigentlich selber merken müssen :wink:
Und das mit „aufzählungszeichen“ war nun noch die Antwort, die mir bis dahin niemand geben konnte.
In genau dieser Kombination funktioniert es dann auch.

Gruß
Björn

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]