View Single Post
 
Old 06-17-2021, 09:20 AM
Shelley Lou Shelley Lou is offline Windows 10 Office 2016
Expert
 
Join Date: Dec 2020
Posts: 259
Shelley Lou is on a distinguished road
Default VBA code help: replacing punctuation

Hi, I would like to tidy up this code.
1. After each sentence the code runs to remove punctuation and replace with a semi-colon. It doesn't seem to work unless I put the .Text = ".^p" bit of the code to remove periods first though. Is there a better way to do this?
2. The code needs to remove punctuation before a square bracket at the end of sentences only. I have put the code in as .Text = ".]^p" etc. which removes punctuation, what I need is for the code that inserts the semi-colon, to search for square brackets and insert the semi-colon before the square bracket not after it.

I'm really not sure how to make this happen, can anyone help please.

Code:
 'Remove period from end of sentence
    Set orng = ActiveDocument.Range
    With orng.Find
    .Text = ".^p"
   .Replacement.Text = "^p"
   .Execute Replace:=wdReplaceAll
    End With
    'Remove period before square bracket at end of sentence
       Set orng = ActiveDocument.Range
    With orng.Find
      .Text = ".]^p"
      .Replacement.Text = "]^p"
      .Execute Replace:=wdReplaceAll
      End With
      'Insert semi-colon at end of sentences but not for and, but, or, then
      Set orng = ActiveDocument.Range
    For Each Para In ActiveDocument.Paragraphs
    With Para.Range
      If Len(.Text) > 2 Then
        If Not .Characters.Last.Previous Like "[.!?:;]" Then
          Select Case .Words.Last.Previous.Words(1)
            Case "and", "but", "or", "then"
              'do nothing
            Case Else
              .Characters.Last.InsertBefore ";"
          End Select
        End If
      End If
    End With
Reply With Quote