Word-Makro: Text-Einzug suchen

  • #1
A

Alfons-Willie

Guest
Hallo,

Ich habe hier einen Word-Text

Absätze im Text sind versehen mit:
Sondereinzug: Erste Zeile
Der Einzugswert ist je nach Inhalt unterschiedlich

Jetzt möchte ich gerne Absätze mit einem bestimmten Einzugswert suchen und vor diesen eine Textinformation voranstellen (z.B [ABSATZ 0.27]TextDesAbsatzes....

Leider sind meine Kenntnisse der Makro-Programmierung nur auf einfachste Sachen beschränkt. So ist mir zwar sehr schnell klar geworden das der Begriff .ParagraphFormat.FirstLineIndent = CentimetersToPoints (0.27) mit der Suche zu tun hat, aber dies allein hat mich nicht sehr weit gebracht.

Kann mir jemand helfen.

Vielen Dank

Alfons-Willie
 
  • #2
Hallo Alfons-Willie,

probier mal folgenden Makro aus, ob er das erfüllt, was Du möchtest.
(Bitte erst an einer Kopie des Dokumentes ausprobieren)

Die Konstanten mußt Du deinen Gegebenheiten anpassen.

Gruß Matjes :)
Code:
Public Sub Word_Paragraph_ExtraEinzugSuchenUndTextEinfuegen()
 ->Der Makro untersucht alle Paragraphen.
 ->Hat der Paragraph einen Einzug->Erste Zeile' mit
 ->dem Wert der konstanten c_pointSucheEinzugIn_cm,
 ->wird dem Paragraphen der Text der Konstanten c_InsertText
 ->vorangestellt. Steht dieser Text bereits am Anfang des
 ->Paragraphen, wird der Text nicht ein zweites Mal
 ->vorangestellt.
'********************************************************
 ->gesuchter Einzug in cm
  Const c_pointSucheEinzugIn_cm As Double = 1.27
 ->Text der am Anfang eines Paragraphen eingefügt werden soll
  Const c_InsertText = [ABSATZ 1.27]
  
  Dim p As Paragraph, SuchEinzug_point As Single
  
 ->gesuchter Einzug in point umrechnen
  SuchEinzug_point = CentimetersToPoints(c_pointSucheEinzugIn_cm)
  
 ->Da Word bei der Einzugsformatierung eigene Rundungen durchführt
 ->wird das an einem angefügten Paragraphen nachvollzogen
 ->a) Paragraph hinzufügen
  Set p = ActiveDocument.Paragraphs.Add
 ->b) Paragraph mit dem SuchEinzug formatieren
  p.Format.FirstLineIndent = SuchEinzug_point
 ->c) SuchEinzug wieder auslesen
  SuchEinzug_point = p.Format.FirstLineIndent
 ->d) Paragraph wieder löschen
  p.Range.Delete
  
 ->füe alle Paragraphen
  For Each p In ActiveDocument.Paragraphs
    If p.Format.FirstLineIndent = SuchEinzug_point Then
      p.Range.Select
     ->doppeltes Einfügen bei Wiederholung vermeiden
     ->wenn Text schon am Anfang vorhanden -> überspringen
      If Left(Selection.Text, Len(c_InsertText)) <> c_InsertText Then
       ->Textinformation an den Anfang des Paragraphen setzen
        Selection.InsertBefore (c_InsertText)
      End If
    End If
  Next
End Sub
 
Thema:

Word-Makro: Text-Einzug suchen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben