Autom. Textbereich schützen/Zeilenfilter o.Ä.

Das Textverarbeitungsprogramm

Moderator: Moderatoren

F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Autom. Textbereich schützen/Zeilenfilter o.Ä.

Beitrag von F3K Total »

Hi,
folgende Methode zum erzeugen schreibgeschützter Textbereiche ist mir bekannt:
  • Textbereich markieren
  • Einfügen->Bereich->Haken bei Schreibschutz
Das ist dir zu aufwendig, daher habe ich ein Makro geschrieben, dass das Anlegen geschützter Bereiche übernimmt.
Vorgehen:
  • Erzeuge eine neue Absatzvorlage (F11/Absatzvorlagen/Rechtsklick auf Standard -> Neu ... und gebe ihr den Namen GESCHÜTZT
  • markiere deine zu schützenden Texte mit deiner RegEx-Suche
  • Doppelklicke auf GESCHÜTZT um den markierten Absätzen die neue Absatzvorlage zuzuweisen
  • Lasse das folgende Makro einmal laufen

Code: Alles auswählen

Sub S_Protect_ParaStyle
    otext = ThisComponent.Text
    oTextCursor = otext.createTextCursor
    oTextCursor.collapseToStart
    ncounter = 1
    do
    bfound = false
       do while oTextCursor.ParaStyleName = "GESCHÜTZT"
           oTextCursor.gotonextparagraph(true)
           bfound = true
       loop 
       if bfound then
       oTextCursor.gotoPreviousWord(true)
       oTextsection = Thiscomponent.createInstance("com.sun.star.text.TextSection")
       oTextsection = Thiscomponent.createInstance("com.sun.star.text.TextSection")
       oTextsection.isProtected = TRUE
       oTextsection.Name = "Ges_B_"+nCounter
       oText.insertTextContent(oTextCursor, oTextsection, TRUE)
       ncounter = ncounter + 1
       end if
    loop while oTextCursor.gotonextparagraph(false)  = true 
End Sub
Überprüfe das Ergebnis unter Format/Bereiche ...
EDIT: Habe das Makro verbessert, zusammenhängende Paragraphen werden jetzt in einem Bereich zusammengefaßt.
Mit diesem Makro können die geschützen Bereiche in einem Rutsch wieder entfernt werden.

Code: Alles auswählen

Sub S_remove_TextSections
    otext = ThisComponent.Text
    for i = thiscomponent.Textsections.count - 1 to 0 step - 1
        oSection = thiscomponent.Textsections(i)
        otext.removeTextContent(oSection)
    next i
end sub
Gruß R