![]() |
|
|
|
#1
|
||||
|
||||
|
You could just change:
FindText:="[^13]{3,}" to: FindText:="[^13]{2,}" and leave: ReplaceWith:="^p^p" alone. Alternatively, you might modify the Dim line at the top of the UpdateDocuments sub, thus: Code:
Dim strInFolder As String, strFile As String, Sctn As Section, HdFt As HeaderFooter, Rng As Range Code:
With HdFt
If .Exists Then .Range.Find.Execute FindText:="[^13]{3,}", ReplaceWith:="^p^p", MatchWildcards:=True, Replace:=wdReplaceAll
End With
Code:
With HdFt
If .Exists Then
Set Rng = .Range.Characters.Last
With Rng
Do While .Start > HdFt.Range.Start
If .Characters.First.Previous = vbCr Then
.Start = .Start - 1
Else
Exit Do
End If
Loop
If .Paragraphs.Count > 2 Then .Text = vbCr & vbCr
End With
End If
End With
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#2
|
|||
|
|||
|
Paul, the first suggestion did not seem to work...seems it does not recognize the last paragraph mark....so I made the suggested substitution.
Unfortunately, it threw an error code. Run-time error '91' Object variable or With block variable not set when I went to the debug screen the following was highlighted. Set Rng = Rng.Characters.Last The complete code is below. Option Explicit Dim FSO As Object, oFolder As Object, StrFolds As String, wdDocSrc As Document, wdDocTgt As Document Sub ReplaceParagraphsInHeader() Application.ScreenUpdating = False Dim TopLevelFolder As String, TheFolders As Variant, aFolder As Variant, i As Long TopLevelFolder = GetFolder If TopLevelFolder = "" Then Exit Sub StrFolds = vbCr & TopLevelFolder If FSO Is Nothing Then Set FSO = CreateObject("Scripting.FileSystemObject") End If Set wdDocSrc = ActiveDocument 'Get the sub-folder structure Set TheFolders = FSO.GetFolder(TopLevelFolder).SubFolders For Each aFolder In TheFolders RecurseWriteFolderName (aFolder) Next 'Process the documents in each folder For i = 1 To UBound(Split(StrFolds, vbCr)) Call UpdateDocuments(CStr(Split(StrFolds, vbCr)(i))) Next Set wdDocSrc = Nothing: Set wdDocTgt = Nothing Application.ScreenUpdating = True End Sub Sub RecurseWriteFolderName(aFolder) Dim SubFolders As Variant, SubFolder As Variant Set SubFolders = FSO.GetFolder(aFolder).SubFolders StrFolds = StrFolds & vbCr & CStr(aFolder) On Error Resume Next For Each SubFolder In SubFolders RecurseWriteFolderName (SubFolder) Next End Sub Function GetFolder() As String Dim oFolder As Object GetFolder = "" Set oFolder = CreateObject("Shell.Application").BrowseForFolder( 0, "Choose a folder", 0) If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.path Set oFolder = Nothing End Function Sub UpdateDocuments(oFolder As String) Dim strInFolder As String, strFile As String, Sctn As Section, HdFt As HeaderFooter, Rng As Range strInFolder = oFolder strFile = Dir(strInFolder & "\*.doc", vbNormal) While strFile <> "" Set wdDocTgt = Documents.Open(FileName:=strInFolder & "" & strFile, AddToRecentFiles:=False, Visible:=False) With wdDocTgt For Each Sctn In .Sections For Each HdFt In Sctn.Headers With HdFt If .Exists Then Set Rng = Rng.Characters.Last With Rng Do While .Characters.First.Previous = vbCr .Start = .Start - 1 Loop If .Paragraphs.Count > 2 Then .Text = vbCr & vbCr End With End If End With Next Next 'Save and close the document .Close SaveChanges:=True End With strFile = Dir() Wend End Sub |
|
#3
|
|||
|
|||
|
It errors because Rng hasn’t been set to anything.
Change to: Code:
Set Rng = HdFt.Range.Characters.Last |
|
#4
|
|||
|
|||
|
Italophile thanks for joining the discussion.
I tried your suggestion and it worked a bit farther into the code. It now throws the same error on the line of: Do While .Characters.First.Previous = vbCr I tried: Do While HdFt.Characters.First.Previous = vbCr and Do While HdFt.Range.Characters.First.Previous = vbCr but neither worked. |
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| a macro to replace paragraph mark with a space applies effect on paragraph marks after the selection | drrr | Word VBA | 2 | 08-24-2021 03:05 AM |
What is this paragraph mark called
|
booneyrex | Word | 8 | 03-04-2021 04:15 AM |
Indention below paragraph mark...
|
kikola | Word VBA | 13 | 05-26-2020 06:21 AM |
Please help with header and footer removal
|
pwangdel | Word | 3 | 11-03-2011 06:10 AM |
Final paragraph mark
|
Caroline | Word | 2 | 02-22-2011 10:39 AM |