VBA Absätze löschen mit If-Bedingungen

Moderator: ModerationP

VBA Absätze löschen mit If-Bedingungen

Beitragvon Quaecko » 27. Okt 2019, 21:43

Hallo,

ich muss zur Zeit einige lange Text in Word neu formatieren. Dabei muss ich vorallem immer wieder die Absätze herauslöschen. Jedoch sollen die Überschriften dabei eigentlich erhalten bleiben.
Daher hatte ich überlegt eine VBA-Programmierung zu erstellen, die per If-Bedingung erkennt, wenn ich ein Sonderzeichen hinter eine Überschrift schreibe z.B. "§", so dass dieser Satz dann von dem Absatz löschen ausgeschlossen wird.

Habt ihr vielleicht eine Idee, wie man hierbei eine entsprechende If-Bedingung einfügen könnte?

Danke für eure Tipps im Voraus. :)

Sub Absätze_löschen()

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^p"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Quaecko
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 12
Registriert: 09. Aug 2017, 09:42

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon theoS » 28. Okt 2019, 15:30

Du meinst die Absatzmarke?
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4878
Registriert: 19. Apr 2008, 00:14

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon Gast » 28. Okt 2019, 20:55

Hi Theos,

ja genau. Die Absatzmarken sollen gelöscht werden. Jedoch soll dies unter der Bedingung erfolgen, dass einzelne Sätze davon ausgeschlossen werden, wenn Sie z.B. ein Sonderzeichen wie "§" enthalten, damit ich z.B. Überschriften davon ausschließen kann.
Gast
 

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon theoS » 28. Okt 2019, 21:10

Das würde ich jetzt einfach mit Absatzformatvorlagen lösen. Wenn deine Überschrift im Überschriftformat ist, brauchst du die Suche nur aufs Format Standard (oder dein Fließtextformat halt) einstellen. Auszunehmende formatierst du zu einem der aussieht wie dein Fließtext aber anders heißt.
Dann werden nur die Absatzmarken des bestimmten Formats gelöscht.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4878
Registriert: 19. Apr 2008, 00:14

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon Quaecko » 28. Okt 2019, 22:13

Hi Theos,

Danke für deine Idee. Es funktioniert jedoch nur bedingt. Da auch die Standard Absätze vor den "Titeln" gelöscht werden, ändern sich die Absätze der Titel durch die Absatzverschiebung wieder ins Standardformat.
Ich kann nur vor und hinter die Titel ebenfalls noch Absätze mit anderen Formaten einfügen, damit die Absätze optisch getrennt bleiben. Jedoch ändert sich der Standardtext dann auch ins Titelformat. Also ist hinterher alles etwas durcheinander.
Quaecko
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 12
Registriert: 09. Aug 2017, 09:42

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon theoS » 29. Okt 2019, 22:19

Na ja, dann kann man natürlich auch von hinten her die Absätze durchschleifen und mit instr() nach dem Zeichen suchen. Das sollte nicht gar so schwer sein, aber halt vermutlich langsam, wenn du viele Seiten hast.
Ist nur so eine Idee, ich schau mal morgen, ob ich da ein wenig code rumliegen hab.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4878
Registriert: 19. Apr 2008, 00:14

Re: VBA Absätze löschen mit If-Bedingungen

Beitragvon theoS » 30. Okt 2019, 23:34

Test das mal, ob das tut was du willst

Code: Alles auswählen
Sub kiAbs()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim xN As Long: xN = dd1.Paragraphs.Count
'
For i = xN To 1 Step -1

  If InStr(dd1.Paragraphs(i), "###") Then
 
  ElseIf dd1.Paragraphs(i).Format.OutlineLevel <> wdOutlineLevelBodyText Then
   If i > 1 Then
    i = i - 1
   End If
  Else: dd1.Paragraphs(i).Range.Characters.Last.Delete
  End If
 Next i


End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4878
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste