Почему-то пост урезался, возможно из-за ссылки.. Еще раз:
Попробовал сделать макрос, который выделял бы следующий кусок текста (тут обычный текст, не перекрестная ссылка) : "[номер_ссылки]", копировал номер_ссылки, выделял и удалял этот текст, вставлял перекрестную ссылку с скопированным номером_ссылки.
Sub refchange()
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
Selection.Copy
Selection.MoveLeft Unit:=wdCharacter, Count:=2
Selection.MoveRight Unit:=wdCharacter, Count:=3, Extend:=wdExtend
Selection.Delete Unit:=wdCharacter, Count:=1
Selection.InsertCrossReference ReferenceType:="Абзац", ReferenceKind:= _
wdNumberRelativeContext, ReferenceItem:="2", InsertAsHyperlink:=True, _
IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
End Sub
Однако возникла проблема - не получается передать в переменную ReferenceItem мой скопированный номер_ссылки.
Пробовал записывать в переменную, а затем туда, тоже не получалось.. Возникали две проблемы - не мог понять, как правильно записать скопированный номер в переменную, и как передать в ReferenceItem методу Selection.InsertCrossReference.
В документации к методу написано: "Для всех остальных значений ReferenceType этот аргумент указывает номер или имя элемента в поле тип ссылки в диалоговом окне Перекрестные ссылки".
Пробовал просто вставить ссылку, передав переменную методу, выдавало ошибки всегда (runtime error 4198):
Dim refnumb as integer
refnumb = 4
...
Selection.InsertCrossReference ReferenceType:="Абзац", ReferenceKind:= _
wdNumberRelativeContext, ReferenceItem:=refnumb, InsertAsHyperlink:=True, _
IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "