#16
|
||||
|
||||
There is a complexity in using ranges as adding the brackets can often end up inside the field itself. For this reason you need to use the Selection object which is kind of a pain. Try this code version
Code:
Sub AppendixParens() ' Charles Kenyon and Andrew Lockton using code from Graham Mayor ' October 21, 2021 ' https://www.msofficeforums.com/word/47835-putting-parentheses-around-sequence-number-caption-label.html Dim oStory As Range, oFld As Field, iCount As Integer, aRng As Range On Error Resume Next For Each oStory In ActiveDocument.StoryRanges For Each oFld In oStory.Fields If oFld.Type = wdFieldSequence Then If oFld.Code Like "*Table*" Then Set aRng = oFld.Result oFld.Select 'need to use selection object to make insertbefore go outside of field Selection.Range.InsertBefore "(" Selection.Range.InsertAfter ")" iCount = iCount + 1 End If End If Next oFld Next Set oFld = Nothing Set oStory = Nothing On Error GoTo 0 MsgBox iCount & " instances bracketed.", vbOKOnly, "Macro complete" End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#17
|
||||
|
||||
Actually, I think this is a massive improvement and avoids the problem with cross-references. This one changes the number format of the field itself so the brackets are part of the field itself.
Code:
Sub AppendixParensIntegrated() ' Charles Kenyon and Andrew Lockton using code from Graham Mayor ' October 21, 2021 ' https://www.msofficeforums.com/word/47835-putting-parentheses-around-sequence-number-caption-label.html Dim oStory As Range, oFld As Field, iCount As Integer, aRng As Range On Error Resume Next For Each oStory In ActiveDocument.StoryRanges For Each oFld In oStory.Fields If oFld.Type = wdFieldSequence Then If oFld.Code Like "*Table*" Then oFld.Code.Text = "SEQ Table \# ""(#)"" " iCount = iCount + 1 End If End If Next oFld Next ActiveDocument.Fields.Update Set oFld = Nothing Set oStory = Nothing On Error GoTo 0 MsgBox iCount & " instances bracketed.", vbOKOnly, "Macro complete" End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#18
|
|||
|
|||
Andrew, I ran your macro on the sample file provided and it did nothing because of the term "Table." When I changed it to "Appendix" it caught the in-line instance but not the one in the Textbox.
Code:
Sub AppendixParensIntegrated() ' Charles Kenyon and Andrew Lockton using code from Graham Mayor ' October 21, 2021 ' https://www.msofficeforums.com/word/47835-putting-parentheses-around-sequence-number-caption-label.html ' Instead of adding () characters, change the field's display format to include them Dim oStory As range, oFld As Field, iCount As Integer, aRng As range On Error Resume Next For Each oStory In ActiveDocument.StoryRanges For Each oFld In oStory.Fields If oFld.Type = wdFieldSequence Then If oFld.Code Like "*Appendix*" Then oFld.Code.Text = "SEQ Appendix \# ""(#)"" " iCount = iCount + 1 End If End If Next oFld Next oStory ActiveDocument.Fields.Update Set oFld = Nothing Set oStory = Nothing On Error GoTo 0 MsgBox iCount & " instances bracketed.", vbOKOnly, "Macro complete" End Sub |
#19
|
|||
|
|||
With this document, in the Immediate panel the following results in 0:
Code:
? ActiveDocument.StoryRanges(wdTextFrameStory).Fields.Count 0 With the main story, the result is 1. |
#20
|
||||
|
||||
I thought with my earlier testing the code worked on both instances (which at that time were Sequence Table fields) but now I've retested it I can see it only caught the inline field. Now it appears that the first field is in a Shape object so the code would change to ...
Code:
Sub AppendixParensIntegrated2() ' Charles Kenyon and Andrew Lockton using code from Graham Mayor ' October 21, 2021 ' https://www.msofficeforums.com/word/47835-putting-parentheses-around-sequence-number-caption-label.html Dim oStory As Range, oFld As Field, iCount As Integer, aRng As Range, aShape As Shape On Error Resume Next For Each oStory In ActiveDocument.StoryRanges For Each oFld In oStory.Fields If oFld.Type = wdFieldSequence Then If oFld.Code Like "*Appendix*" Then oFld.Code.Text = "SEQ Appendix \# ""(#)"" " iCount = iCount + 1 End If End If Next oFld Next For Each aShape In ActiveDocument.Shapes If aShape.TextFrame.HasText Then For Each oFld In aShape.TextFrame.TextRange.Fields If oFld.Type = wdFieldSequence Then If oFld.Code Like "*Appendix*" Then oFld.Code.Text = "SEQ Appendix \# ""(#)"" " iCount = iCount + 1 End If End If oFld.Update Next oFld End If Next aShape ActiveDocument.Fields.Update Set oFld = Nothing Set oStory = Nothing On Error GoTo 0 MsgBox iCount & " instances bracketed.", vbOKOnly, "Macro complete" End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#21
|
|||
|
|||
Quote:
Ok, good idea, but who can speak with faculty members?! Our love, respect, and thanks to real-world experts like Andrew, Graham, and Charles I can't thank them enough I appreciate their time and efforts My best wishes to them. |
#22
|
|||
|
|||
Sorry for the late reply, because I being so busy
You can download the sample file from the attachment, but the last code by Mr. Andrew works amazing and absolutely. I think you should take your rest, as the problem has been solved. Thank you Thank you, I really appreciate your help Thank you, That’s very kind of you. |
#23
|
|||
|
|||
Quote:
Thank you Mr. Charles Thank you for your time and interest Best Regards |
#24
|
|||
|
|||
Quote:
Wow, Well done! Billion Thanks Mr. Andrew The code solved my problem and worked in the right way Mr. Andrew, Thank you, You’re so helpful All my love and thanks to you I can’t thank you enough for helping me I will never forget what you have done Words can’t describe how thankful I am Thank you |
Tags |
find & replace, find replace;wildcards, word 19 |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Formula for number sequence | 14spar15 | Excel Programming | 4 | 03-18-2018 07:00 PM |
Assigning a string variable to a userform label caption | Larry_1 | Excel Programming | 3 | 12-18-2017 06:59 AM |
how to have two formats in the Caption style: Label – number - text? | Jamal NUMAN | Word | 39 | 03-14-2017 06:32 PM |
Custom caption list label lost in a new Word session | New Daddy | Word | 1 | 09-22-2013 09:21 AM |
Custom caption label annoyance | zac | Word | 1 | 08-29-2010 09:56 AM |