![]() |
|
#1
|
|||
|
|||
![]() I have a Word document which has Hyperlinks which may contain subscripts. I have a special Character Style("MyStyle"), which I sometimes need to convert these Hyperlinks to. But if I select each Hyperlink as a Range and then change the Range.Font to MyStyle, the Range.Text all returns to plain, and the subscripts are lost. I have tried pasting the Range Text after the Range and then using a For Loop to try and duplicate the Font Attributes, also creating a second Range and again using a For Loop, all to no avail. newRg = .Range.Duplicate newRg.SetRange(.Range.Start + Len(.Range.Text), .Range.End + Len(.Range.Text)) newRg.Select() ' This attempt to move newRg to after .Range has no effect newRg.Start = .Range.Start + Len(.Range.Text) newRg.End = .Range.End + Len(.Range.Text) ' Nor does this ... The second part of the problem is the Font Change: newRg.Style = "MyStyle" 'here the subscripts are lost For i = 1 To .Range.Characters.Count newRg.Characters(i + Len(.Range.Text)).Font.Subscript = .Range.Characters(i).Font.Subscript Next ' And this has no effect at all. I fear I am missing something very fundamental! Could anyone help please? If I could simply get the two (identical) ranges positioned one after the other, then I could use the For Loop as shown. But duplicating the range and then trying to move it does not seem to work. Last edited by CharlieM; 08-04-2021 at 10:34 PM. |
#2
|
||||
|
||||
![]()
The problem is that your style is a character style. Change the style type to a linked paragraph and character style and the macro is should be unnecessary.
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
![]()
OK, I have re-created the style as a linked paragraph and character style, but now my ".Find" loop never finds it!
With rg.Find .Forward = True .Format = True .Wrap = wdFindContinue .Style = "MyStyle" allTheTips = "" Do While .Execute rg.Select() ... ' Processing happens here... ... Loop End With I have given the new style the same name as the old style (which I have deleted). I am wondering if I have discovered a Word 'idiosyncracy'?! |
#4
|
||||
|
||||
![]()
Charlie, I don't think you are missing anything fundamental - it is an idiosyncracy. This is how Word chooses to apply Character styles - it removes local font settings when you apply it. You also can't stack Character styles (apply more than one at a time).
If you know your way around xml you could edit the document.xml to replace the Hyperlink style with MyStyle. This preserves the other local formatting. When you need to do this - why do you need to do it? Could you modify the attributes of the Hyperlink style instead so that it looked like MyStyle?
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
![]() |
Tags |
copying ranges, range styles/fonts |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
How to write individual lines of text with changing attributes. | sts023 | Word VBA | 0 | 05-26-2019 07:43 AM |
![]() |
AustinBrister | Word VBA | 19 | 08-22-2016 05:18 PM |
Changing font | TonyH | Outlook | 0 | 05-22-2014 07:58 AM |
![]() |
blaze | Word VBA | 1 | 04-15-2012 02:21 AM |
changing font size without changing leading | carolns | Word | 1 | 09-14-2009 12:30 PM |