I have these commands in a Word macro (Word 2013):

    Selection.InsertCrossReference ReferenceType:="Heading", _
        ReferenceKind:=wdNumberNoContext, ReferenceItem:=Step, _
    Selection.TypeText Text:=vbTab
    Selection.InsertCrossReference ReferenceType:="Heading", _
        ReferenceKind:=wdContentText, ReferenceItem:=Step, InsertAsHyperlink:=True _
        , IncludePosition:=False        InsertAsHyperlink:=True, IncludePosition:=False
For each Heading in a document, these commands print the heading number followed by a tab followed by the heading text. Like this:
‎1 This is a first level heading with bookmark
‎2 This a first level heading without bookmark

Some of the headings are bookmarked, and in those cases the cross-references use the bookmark names rather than generic references. Like this:
{ REF FirstLevelHeadingwBM \n \h }       { REF FirstLevelHeadingwBM \h }
For headings that are not bookmarked, the cross-references look like this:
{ REF_Ref157949988 \n \h }       { REF _Ref157949988 \h }
Since I might delete some of the bookmarks at a later time, I want the macro to only use the generic Refs and to never use the bookmark names. How can I modify the code to prevent using the bookmark names as Refs in the cross-references?

Also, is there a simple way to get the \* charformat switch incorporated in the cross-references, or would I need to add them using separate statements?