![]() |
#4
|
|||
|
|||
![]()
I have the habit, when I see excellent code, to save it for future use and perhaps tweak it. In this case, I realize that this works when the fields have been updated. This requires an extra step, which may be desirable to actually see the broken Ref fields before deleting them. Here is code that should delete any broken Ref fields even if you do not see the error message because you have not updated the fields.
I added a step to update Ref fields when located. See following post for corrected code. Code:
Sub RefBrokenRemove2() 'Graham Mayor - https://www.gmayor.com - Last updated - 02 Dec 2020 'https://www.msofficeforums.com/word/46089-macro-delete-cross-reference-error-message-when.html ' Remove broken Cross-Reference Fields ' Modified by Charles Kenyon to first update ref fields ' Dim i As Integer Dim oStory As range For Each oStory In ActiveDocument.StoryRanges For i = oStory.Fields.Count To 1 Step -1 If oStory.Fields(i).Type = wdFieldRef Then oStory.Fields(i).Update If oStory.Fields(i).Result = "Error! Reference source not found." Then oStory.Fields(i).Delete End If Next i If oStory.StoryType <> wdMainTextStory Then While Not (oStory.NextStoryRange Is Nothing) Set oStory = oStory.NextStoryRange For i = oStory.Fields.Count To 1 Step -1 If oStory.Fields(i).Type = wdFieldRef Then oStory.Fields(i).Update If oStory.Fields(i).Result = "Error! Reference source not found." Then oStory.Fields(i).Delete End If ' End If ' This line commented out to correct code Next i Wend End If Next oStory lbl_Exit: Set oStory = Nothing Exit Sub End Sub Last edited by Charles Kenyon; 12-03-2020 at 10:52 AM. |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
Slamzor | Word VBA | 1 | 12-01-2017 05:12 PM |
![]() |
lodi123 | Word | 2 | 03-28-2017 11:24 PM |
![]() |
frannie | Word | 2 | 03-23-2017 04:33 PM |
![]() |
Maddog32 | Word | 2 | 06-10-2016 02:39 PM |
![]() |
mpdsal | Word | 1 | 07-26-2012 01:05 PM |