A family of Microsoft word processing software products for creating web, email, and print documents.
Instead of using the .Hyperlinks.Add method, which it seems likely to be the case, you would probably get better results with cross-references to your bookmarks, which you can do using the .Fields.Add method. By including the "\h" switch as part of the Text argument, the cross-reference will both hyperlink to the source and auto-update to reflect pagination changes (which hyperlinks won't do) without imposing the blue underlined font typical of hyperlinks. That will at least give you one less issue to deal with.
The code for the .Fields.Add method might be implemented along the lines of:
ActiveDocument.Fields.Add Range:=Rng, Type:=wdFieldPageRef, Text:=StrBkMk & " \h", PreserveFormatting:=False
where Rng is a Range variable defining the location you want to insert the cross-reference at an StrBkMk is a string variable holding the bookmark's name. These are arguments you would already be using for the Hyperlinks.Add method's Anchor & SubAddress, respectively.