1

Тема: Перекрёстная ссылка: как записать её строчными буквами?

Как для всех перекрёстных ссылок в документе задать формат «Строчные буквы»?
Хочу, чтобы все перекрёстные ссылки на «Рис. ...» или «Табл. ...» выглядели везде в тексте как «рис. ...» или «табл. ...» соответственно.

2

Re: Перекрёстная ссылка: как записать её строчными буквами?

Чтобы изменить формат отображения ссылки нужно выбрать контекстное меню→Изменить поле… и в списке "Формат:"  выбрать требуемый формат отображения. Также нужно поставить галочку "Сохранять формат при обновлении".
Если ссылок много, то можно то же самое сделать при помощи макроса, перебрав все поля ссылок:

Sub LowerCrossRef()
  Dim oFld As Field
  For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldRef Then
      'Все строчные
      If InStr(oFld.Code.Text, "\* Lower ") = 0 Then
        oFld.Code.Text = oFld.Code.Text & "\* Lower "
      End If
      'Сохранять формат при обновлении.
      If InStr(oFld.Code.Text, "\* MERGEFORMAT ") = 0 Then
        oFld.Code.Text = oFld.Code.Text & "\* MERGEFORMAT "
      End If
    End If
  Next
End Sub
Лучше день потерять — потом за пять минут долететь!

3

Re: Перекрёстная ссылка: как записать её строчными буквами?

Спасибо, именно для множества ссылок мне нужен был код макроса.
Я немного усовершенствовал ваш код. Добавлены 1) обновление поля после его изменения и 2) полная замена формата поля, а не добавление.

Sub LowerCrossRef()
  Dim lowerStr As String 
  On Error Resume Next
  lowerStr = "\* lower \* mergeformat "
  Dim oFld As Field
  For Each oFld In ActiveDocument.Fields
    If oFld.Type = wdFieldRef Then
      'Все строчные
      If InStr(oFld.Code.Text, "\*") = 0 Then
      'Для поля не задан никакой формат
        oFld.Code.Text = oFld.Code.Text & lowerStr
      Else
      'Для поля задан формат, его нужно очистить
        oFld.Code.Text = Left(oFld.Code.Text, InStr(1, oFld.Code.Text, "\*") - 1) + lowerStr
      End If
    oFld.Update 'Обновить поле после смены формата
    End If
  Next
End Sub

4

Re: Перекрёстная ссылка: как записать её строчными буквами?

Можно и так.
Замечание: строки соединяются оператором &, а не +:

oFld.Code.Text = Left(oFld.Code.Text, InStr(1, oFld.Code.Text, "\*") - 1) & lowerStr
Лучше день потерять — потом за пять минут долететь!