#1
|
|||
|
|||
Replace table and figure caption style to another style Word VBA
Hi,
I have defined two styles (CapitonTable and CaptionFigure) with different formats, I want a VBA code that finds and replaces a default caption style for tables to CapitonTable style, and in the same way for figures to CaptionFigure. Thanks |
#2
|
||||
|
||||
You can do this with find/replace and can also record it if you want it as a macro. Basic process is:
1. Show all field codes (by pressing Alt-F9) 2. Do a find/replace and search for "seq table" and replace with the style 3. Do a find/replace and search for "seq figure" and replace with the style 4. Reveal all field values (by pressing Alt-F9)
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
Quote:
You are the Best Best Regards Here is the macro code for one who concern: Code:
Sub ReplaceCaptionStyle() ' Developed by Andrew Lockton (Guessed) ' Edited by laith93 ' www.msofficeforums.com ' Showing all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting ' Replace "CapTbl" with your own alternative caption style for tables Selection.Find.Replacement.Style = ActiveDocument.Styles("CapTbl") With Selection.Find .Text = "seq table" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting ' Replace "CapFig" with your own alternative caption style for figures Selection.Find.Replacement.Style = ActiveDocument.Styles("CapFig") With Selection.Find .Text = "seq figure" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll ' Hiding all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes End Sub |
#4
|
||||
|
||||
Here is your code tidied up a bit. Note that the toggling of field codes makes an assumption that codes were not showing before the macro ran. That is risky so I changed those to explicitly set the value instead of toggling true/false.
Code:
Sub ReplaceCaptionStyle() ' Developed by Andrew Lockton (Guessed) ' Edited by laith93 ' www.msofficeforums.com ' Showing all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = True With Selection.Find .ClearFormatting .Replacement.ClearFormatting ' Replace "CapTbl" with your own alternative caption style for tables .Replacement.Style = ActiveDocument.Styles("CapTbl") .Text = "seq table" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll ' Replace "CapFig" with your own alternative caption style for figures .Replacement.ClearFormatting .Replacement.Style = ActiveDocument.Styles("CapFig") .Text = "seq figure" .Execute Replace:=wdReplaceAll End With ' Hiding all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = False End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#5
|
|||
|
|||
Quote:
Thanks for your warning and note We keep learning Thanks again Mr. Andrew |
#6
|
|||
|
|||
Quote:
when applying this code directly, only styles of the table caption changed to "CapTbl" style, while styles of the figure caption remain unchanged. I tried to make a separate macro for each one, but only for tables work fine, while for figure ones do not work at all, so you need to use the F&R box for figures, hence is there any mistake for the figure part in our code? However, using F&R box works fine for both tables and figures. Also, you can download "Test" in the attachment to apply on it and explore the problem. |
#7
|
||||
|
||||
The issue is that your figure captions are not in the main body of the document. Your example has the graphic floating and the caption is sitting in a text frame. To solve that, you need the macro to find the storyranges which might contain an entry.
Code:
Sub ReplaceCaptionStyle() ' Developed by Andrew Lockton (Guessed) ' Edited by laith93 ' www.msofficeforums.com Dim aRng As Range ' Showing all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = True For Each aRng In ActiveDocument.StoryRanges With aRng.Find .ClearFormatting .Replacement.ClearFormatting ' Replace "CapTbl" with your own alternative caption style for tables .Replacement.Style = ActiveDocument.Styles("CapTbl") .Text = "seq table" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchKashida = False .MatchDiacritics = False .MatchAlefHamza = False .MatchControl = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False .Execute Replace:=wdReplaceAll ' Replace "CapFig" with your own alternative caption style for figures .Replacement.ClearFormatting .Replacement.Style = ActiveDocument.Styles("CapFig") .Text = "seq figure" .Execute Replace:=wdReplaceAll End With Next aRng ' Hiding all field codes (or by pressing Alt-F9): ActiveWindow.View.ShowFieldCodes = False End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#8
|
|||
|
|||
Quote:
You are completely right I always use the wrap option for figures to "Top and Bottom", and the caption inserted to a text box automatically. Thanks Mr. Andrew for your assistance and guidance Best Regards |
Tags |
word 2019, word vba, word vba macro |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Word 2007: Unable to change character style, when using a linked Char/Para style format | Last Chance | Word | 3 | 06-09-2021 12:52 PM |
Replace style in all tables in a word document. | edgar | Word VBA | 5 | 04-02-2019 04:25 PM |
Trying to customize caption text for figure table | canadianjameson | Word | 6 | 04-02-2018 07:44 PM |
Use multiple style sets in the same Word document (depending on which section the style is in) | Ricyteach | Word VBA | 6 | 03-09-2015 07:11 PM |
Changing style of caption heading | NicholaB | Word | 6 | 12-20-2012 04:28 PM |