![]() |
#1
|
|||
|
|||
![]()
I made a tool called HandyRef with VBA that provides a handy way to insert Cross Reference in MS Word, just like copy and paste. "Copy" what you want to reference and "paste" it at the point where cross reference is needed. HandyRef abandons the long list for selecting reference items that MS Word uses and greatly speeds up the cross-reference process. HandyRef provides Ribbon and keyboard shortcut for the user. Picture below shows the Ribbon that integrated in MS Word "Reference" Ribbon tab. By the way, HandyRef is open-source. Details and code can be found at Github
![]() |
#2
|
||||
|
||||
![]()
Your code is similar in principle to how I've done it on my templates. So I will suggest a couple of other things you may not have considered yet.
In our documents, often we want to refer to the heading outline number rather than the text. So when the selection.range is empty, rather than producing a warning to first select text, I create an xRef to the paragraph number (by including '\n' in the ref field code) and add a prefix (eg. Section X) Secondly, when testing to see if a bookmark already exists in the same range, you don't need to compare it to every bookmark in the document - you should compare it to every bookmark that included that range. Code:
'search for existing bookmark reference the same range 'doc.Bookmarks.ShowHidden = True 'this isn't needed for the loop For Each bmi In rg.Bookmarks If bmi.Range.IsEqual(rg) Then Set oldbm = bmi Exit For End If Next bmi 'doc.Bookmarks.ShowHidden = False 'this can annoy users who want it on
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
|||
|
|||
![]()
Thank you for you suggestion
![]() ![]() Code:
Dim oldbm As Bookmark Dim bmi As Bookmark Dim bmShowHiddenOld As Boolean bmShowHiddenOld = rg.Bookmarks.ShowHidden 'search for existing bookmark reference the same range rg.Bookmarks.ShowHidden = True For Each bmi In rg.Bookmarks If bmi.Range.IsEqual(rg) And bmi.Name Like BookmarkPrefix & "#*" Then Set oldbm = bmi Exit For End If Next bmi rg.Bookmarks.ShowHidden = bmShowHiddenOld |
![]() |
Tags |
cross reference |
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
![]() |
WordNoobx | Word | 6 | 05-15-2018 05:46 AM |
![]() |
eNGiNe | Word | 8 | 01-30-2018 06:00 AM |
![]() |
Slamzor | Word VBA | 1 | 12-01-2017 05:12 PM |
![]() |
RomFigo | Word | 9 | 09-25-2015 12:32 AM |
Can you copy & paste cells across worksheets and preserve reference to worksheet? | New Daddy | Excel | 2 | 11-27-2013 07:19 AM |