Insert Cross Reference by vba and add \* Charformat to it

Hi experts

I'm inserting cross-references into a document from a userform, eg of the insert method below.
 Selection.InsertCrossReference ReferenceType:=strLabel, _
        ReferenceKind:=wdOnlyLabelAndNumber, ReferenceItem:=n

When it puts in a Table Caption for instance it inserts the formatting of the caption which is bolded. I've tried a few ways of getting around this (like applying unbold) but on update it reverts back to bold even with unbold character style applied. Then I stumbled across something tonight which I can add into the cross reference field that has been created. And that is \* Charformat . But I can't work out how to get it to automatically come in like this. At the moment I have to right-click on the cross-reference and then click Edit Field > Field Codes > Options > Field Specific Switches > then I paste \* Charformat  down in the field code text box. It is working when I do it this way but I need to set that step by code.

Experts how can I do this through VBA code as this is a very long-winded step?
Fi69Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

GrahamSkanRetiredCommented:
The method does not return the field, nor does the selction contin it, so we have to look backwards for the field and edit it.


Sub InsertXRef()
Dim fld As Field
Dim rng As Range
Selection.InsertCrossReference ReferenceType:="Figure", _
        ReferenceKind:=wdOnlyLabelAndNumber, ReferenceItem:="1"
        Selection.MoveStart wdCharacter, -3
Set rng = Selection.Range
Do Until rng.Fields.Count = 1
    rng.MoveStart wdCharacter, -1
Loop
Set fld = rng.Fields(1)
fld.Code.Text = fld.Code.Text & " \* Charformat"
End Sub

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
GrahamSkanRetiredCommented:
Why are typos invisible before submission, and obvious afterwards?

"selction contin it," should be "selection contain it,"
0
Fi69Author Commented:
I know exactly what you mean about the typos!

That code works brilliantly. I just had to add fld.update at the end so that it appeared correctly in my document.

Thank you so much Graham!
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.