Solved

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

Posted on 2010-09-18
3
1,842 Views
Last Modified: 2012-05-10
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?
0
Comment
Question by:Fi69
  • 2
3 Comments
 
LVL 76

Accepted Solution

by:
GrahamSkan earned 500 total points
ID: 33707687
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
 
LVL 76

Expert Comment

by:GrahamSkan
ID: 33707695
Why are typos invisible before submission, and obvious afterwards?

"selction contin it," should be "selection contain it,"
0
 

Author Comment

by:Fi69
ID: 33709500
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

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A few years ago I was very much a beginner at VBA, and that very much remains the case today.  I'll do my best to explain things as I go in the hope that other beginners can follow.  If you just want to check out a tool that creates a Select Case fu…
This is written from a 'VBA for MS Word' perspective, but I am sure it applies to most other MS Office components where VBA is used.  One thing that really bugs me is slow code, ESPECIALLY when it's mine!  In programming there are so many ways to…
This video shows and describes the main difference between both orientations in Microsoft Word. Viewers will understand when to use each orientation and how to get the most out of them.
The viewer will learn how to make their project stand out over others by learning how to change colors and shapes, add spaces, change directions, and add bullets to their charts.

948 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now