Я думаю, что нашел ошибку с InsertCrossReference. Если я использую исходный код для последнего элемента списка в документе, а после этого элемента списка ничего нет, происходит сбой с ошибкой "Ошибка времени выполнения" 4198 "Команда не удалась". Если делать вручную, то все работает. Итак, вы думаете, я неправильно написал код, но это не так. Чтобы убедиться, я записал макрос вставки перекрестной ссылки, а затем запустил записанный макрос, и произошла та же ошибка.
Я гуглил эту проблему и видел, как несколько человек подняли ее, но а) они не указали, что она не работает только для последнего элемента списка, и в документе ничего нет после этого элемента списка б) у них не было никаких обходные ответы.
Я использую Word 2010, но я также пробовал его в Word 2013, и происходит то же самое.
Если вам нужен пример, если я настрою следующее:
Это моя ссылка
- Привет
- до свидания
где 1 и 2 — стандартные нумерованные списки, и у меня ничего нет в документе после «Пока», а затем я запускаю:
ActiveDocument.Range(16, 16).InsertCrossReference ReferenceType:="Numbered item", _
ReferenceKind:=wdNumberFullContext, ReferenceItem:="2", InsertAsHyperlink _
:=True, IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
Обратите внимание, что ничего не нужно после «Пока». Если вы начнете новую строку с типом списка или без него, приведенный выше код будет работать.
Если у кого-то есть обходной путь для этого, я был бы признателен.
ActiveDocument.Paragraphs.Add Range:=ActiveDocument.Range(ActiveDocument.Range.End -1, ActiveDocument.Range.End -1)
перед добавлением внешней ссылки, если целевой абзац является последним в документе. - person cxw   schedule 28.12.2017