#1
|
|||
|
|||
macro to delete line break
Hi all,
I often have clients who enter manual returns in parts of their document (for instance, in a list of references at the end of a scholarly document). I use a handy find and replace with wildcards Find: (^13)([a-z]) Replace: /2 This removes the manual line break in the middle of reference entries (but not line breaks between references, because those almost always start with a capital letter). Is there a simple macro that I could use to do the same? (if it is detailed, please don't spend time and I can delete the thread--I'm just wondering if it happens to be simple for those who know). |
#2
|
||||
|
||||
First of all the first set of brackets is superfluous
Find: ^13([a-z]) Replace: \1 would achieve the same result - http://www.gmayor.com/replace_using_wildcards.htm As for a macro, select the text that you wish to process and run Code:
Sub RemoveParaOrLineBreaks() Dim oRng As Range Dim oFind As Range Set oRng = Selection.Range Set oFind = Selection.Range With oFind.Find Do While .Execute(FindText:="[^13^l]{1,}", MatchWildcards:=True) If oFind.InRange(oRng) Then oFind.Text = "" End If Loop End With Set oFind = oRng 'Optionally remove additional spaces With oFind.Find Do While .Execute(FindText:="[ ]{2,}", MatchWildcards:=True) If oFind.InRange(oRng) Then oFind.Text = Chr(32) oFind.Collapse 0 End If Loop End With 'end of option lbl_Exit: Set oRng = Nothing Set oFind = Nothing Exit Sub End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com Last edited by gmayor; 05-28-2015 at 05:02 AM. |
#3
|
|||
|
|||
Wow, thank you for your detailed response and the macro Graham. When I select the references list at the end of the document and run the macro, it seems to remove all line breaks. What I'm looking for is to only remove line breaks followed by a lowercase letter.
For example, imagine that the user has these two reference entries in his/her references list: De Jean, J., Upitis, R., Koch, C., & Young, J. (1999). The story of Phoenix Quest: How girls respond to a prototype language and mathematics computer game. Gender and Education, 11(2). Smith, X. Y. (2015). Some title. Some publication info. Users often enter manual line breaks, as seen in the first reference entry above (manual line break after "respond to a"). These breaks cause problems with alignment, prevent alphabetization of the list, and cause other problems. So the original find and replace will take care of this issue, but having it as a macro would help because I could add it into a larger macro that I'm compiling to do some formatting to references lists to save me time. Any way to adjust the macro to just catch the breaks followed by a lowercase letter? Thanks you again for your thoughtful reply. |
#4
|
|||
|
|||
If you just remove the linebreak after respond to a, you will be left with respond to aprototype. You need to add a space, yes?
Code:
Sub RemoveParaOrLineBreaks() Dim oRng As Range, oFind As Range Set oRng = Selection.Range Set oFind = Selection.Range With oFind.Find .Text = "[^13^l]{1,}([a-z])" .MatchWildcards = True Do While .Execute If oFind.InRange(oRng) Then oFind.Text = Chr(32) & oFind.Characters.Last End If Loop End With lbl_Exit: Set oRng = Nothing Set oFind = Nothing Exit Sub End Sub |
#5
|
||||
|
||||
The macro acts on the selected text, so only select the problematic lines. In the case of your example, select only
De Jean, J., Upitis, R., Koch, C., & Young, J. (1999). The story of Phoenix Quest: How girls respond to a prototype language and mathematics computer game. Gender and Education, 11(2). and then run the macro or to do what you asked Code:
Sub RemoveParaOrLineBreaks() Dim oRng As Range Dim oFind As Range Set oRng = Selection.Range Set oFind = Selection.Range With oFind.Find .Replacement.Text = "\1" Do While .Execute(FindText:="[^13^l]{1,}([a-z])", _ MatchWildcards:=True, _ Replace:=wdReplaceAll) Loop End With lbl_Exit: Set oRng = Nothing Set oFind = Nothing Exit Sub End Sub
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Can't delete page break | John Holstein | Word | 5 | 04-01-2015 09:00 AM |
Line break between en dash and number | 90-degree | Word | 1 | 01-14-2015 01:09 PM |
How can I remove line break from 4 dash's | nmss18 | Word | 2 | 09-11-2014 06:07 AM |
delete page break | seeker62 | Word | 3 | 07-22-2013 06:49 PM |
Delete Page Break using VBA | wordpunk | Word VBA | 1 | 07-03-2012 03:05 PM |