1

Тема: Изменение данных источника перекрестной ссылки

Есть справочная таблица с терминами. Далее по тексту эти термины используются много раз (связь через перекрестные ссылки).
В случае изменения наименования какого-либо термина в таблице (стираем старое значение и вписываем новое) ссылки на это наименование приходят в негодность((
Может кто сталкивался с такой задачей, как выйти из ситуации?
Я пробовала в качестве закладок на термины делать закладки на ячейки таблицы, но в таком случае далее по тексту вставляются тоже ячейки(

2

Re: Изменение данных источника перекрестной ссылки

Выход почти найден:
1. Делаю закладку на ячейке с термином.
2. В тексте, где нужно использовать термин, вставляю надпись, в тело которой помещаю перекрестную ссылку на содержимое соответствующей закладки.

И все было бы просто замечательно, однако, содержимое закладки представляет собой не просто ячейку с термином, а еще и знаки перехода на новую строку перед и после этой самой ячейки. Таким образом, вместо 1 строки получается 3, из-за чего в основном тексте увеличивается междустрочное расстояние, и он выглядит мерзковато(((

Кто знает почему в закладку попадают 2 лишние строки? как сделать закладку на ячейку таблицы без этих строк?

3

Re: Изменение данных источника перекрестной ссылки

Приложите, пожалуйста, пример.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

4

Re: Изменение данных источника перекрестной ссылки

Если выделить выделить только текст ячейки, а не всю ячейку, то перекрестная ссылка выглядит нормально, а у вас закладка распространяется на всю ячейку.

5

Re: Изменение данных источника перекрестной ссылки

Alex_Gur пишет:

Приложите, пожалуйста, пример.

Прикладываю пример. По-хорошему проблемная часть должна иметь вид:
"Если Элемент_1 (Table_1.Column_1) равен 1, то должна выполняться ..."

Post's attachments

Перекрестные ссылки на ячейки таблицы.docx 15.05 Кб, 7 скачиваний с 2014-01-22 

You don't have the permssions to download the attachments of this post.

6

Re: Изменение данных источника перекрестной ссылки

Что и требовалось доказать. У Вас проблема диапазоне закладок.

7

Re: Изменение данных источника перекрестной ссылки

aap77 пишет:

Если выделить выделить только текст ячейки, а не всю ячейку, то перекрестная ссылка выглядит нормально, а у вас закладка распространяется на всю ячейку.

В том то и дело... Я хочу добиться эффекта, когда при изменении содержания ячейки ссылка бы не убивалась. Если закладкой сделать сам текст, то при его замене закладка пропадет и перекрестные ссылки порушатся. А если делать закладку на ячейку, то в самой ячейку можно менять содержимое.

8

Re: Изменение данных источника перекрестной ссылки

Для решения этой проблемы вручную совет такой.
Создавайте закладки только на основе текста ячеки. Если требуется его изменить, выделяйте текст так, чтобы остался хотябы один символ закладки. Измените текст, а потом удалите старый символ. закладка сохранится.

9

Re: Изменение данных источника перекрестной ссылки

aap77 пишет:

Для решения этой проблемы вручную совет такой.
Создавайте закладки только на основе текста ячеки. Если требуется его изменить, выделяйте текст так, чтобы остался хотябы один символ закладки. Измените текст, а потом удалите старый символ. закладка сохранится.

Спасибо, я тоже уже склоняюсь к такому способу, придется рискнуть) но документ позднее будет подвергаться правке несколькими людьми, не сильно сведущими в подобным вопросах. Я, конечно, скорее всего напишу инструкцию по внесению изменений, но уже даже просто из спортивного интереса хочется найти способ, как обхитрить коварный Word))

10

Re: Изменение данных источника перекрестной ссылки

Darya пишет:

В том то и дело... Я хочу добиться эффекта, когда при изменении содержания ячейки ссылка бы не убивалась. Если закладкой сделать сам текст, то при его замене закладка пропадет и перекрестные ссылки порушатся. А если делать закладку на ячейку, то в самой ячейку можно менять содержимое.

Можно предложить следующий способ создания глубокоэшелонированной обороны закладок от корявых рук пользователя:

  • В ячейку помещаем элемент управления содержимым "форматированный текст" или "обычный текст".
    В свойствах элемента управления ставим галочку на чекбокс "Элемент управления нельзя удалить".
    Выделяем элемент управления и ставим на него закладку с нужным именем.

Созданная таким образом закладка практически "неубиваема"

11

Re: Изменение данных источника перекрестной ссылки

Boris_R пишет:

Можно предложить следующий способ создания глубокоэшелонированной обороны закладок от корявых рук пользователя:

  • В ячейку помещаем элемент управления содержимым "форматированный текст" или "обычный текст".
    В свойствах элемента управления ставим галочку на чекбокс "Элемент управления нельзя удалить".
    Выделяем элемент управления и ставим на него закладку с нужным именем.

Созданная таким образом закладка практически "неубиваема"

Наиогромнейшее спасибо!!!

12

Re: Изменение данных источника перекрестной ссылки

Boris_R пишет:
Darya пишет:

В том то и дело... Я хочу добиться эффекта, когда при изменении содержания ячейки ссылка бы не убивалась. Если закладкой сделать сам текст, то при его замене закладка пропадет и перекрестные ссылки порушатся. А если делать закладку на ячейку, то в самой ячейку можно менять содержимое.

Можно предложить следующий способ создания глубокоэшелонированной обороны закладок от корявых рук пользователя:

  • В ячейку помещаем элемент управления содержимым "форматированный текст" или "обычный текст".
    В свойствах элемента управления ставим галочку на чекбокс "Элемент управления нельзя удалить".
    Выделяем элемент управления и ставим на него закладку с нужным именем.

Созданная таким образом закладка практически "неубиваема"

Убиваема и практически, потому что пользователь не предсказуем, а это 3 варианта:
1. Пользователь следует инструкции выполнения.
2. Пользователь хочет внести изменения, по своему усмотрению, но не знает как.
3. Пользователь хочет внести изменения, по своему усмотрению, но это не правильно или не нужно.
Я привел 3 основных варианта.

13

Re: Изменение данных источника перекрестной ссылки

Darya пишет:

Может кто сталкивался с такой задачей, как выйти из ситуации?

Какой версией Word пользуетесь? 2003, 2007 или 2010?

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

14

Re: Изменение данных источника перекрестной ссылки

Предлагаю свое решение. Термины я «помечаю» не закладками, а названиями. Эту пометку я делаю в одно действие с помощью макроса. Ниже я описываю ручной способ, а затем привожу текст модуля с макросами.

Следуйте инструкции ниже. Вы должны владеть стандартными способами работы со стилями, названиями и перекрестными ссылками.

1) Создать новое название со следующими параметрами:
- Подпись – «Обозначение».
- Поставить галочку «Исключить подпись из названия».
- Нумерация – 1, 2, 3.

2) Создать стиль знака:
- Имя – «_Полускрытый».
- Настроить стиль: Формат – Шрифт – поставить галочку «скрытый».
- Остальные настройки стиля не трогать.

3) Щелкните по тексту (вне каких либо таблиц) и вставьте название с подписью «Обозначение», напечатайте «** XXX**». У вас должно получиться:

«{номер}** XXX**»

После первых двух звездочек ** обязательно должен быть пробел.

Примечание – Названия из стандартного диалога могут вставляться только над таблицей или под таблицей, других вариантов нет. Поэтому поместить название сразу в ячейку таблицы нельзя (нельзя из стандартного диалога, а вообще можно, и в макросе я так и делаю).

4) Скопируйте строку «{номер}** XXX**» в таблицу (хотя это можно сделать потом).

Разумеется, вы должны (сразу или потом) изменить форматирование названия:
- либо «Очистить формат» и далее прямое форматирование,
- либо применить какой-нибудь стиль (этот способ предпочтительней).

5) Сделайте перекрестную ссылку на термин XXX:
- Тип ссылки – «Обозначение»
- Вставить ссылку на – «Только текст названия»

6) Ссылка создана. Теперь примените стиль «_Полускрытый» к номеру названия и ко всем звездочкам **. Обновите поля (CTRL+A, F9). Посмотрите на перекрестную ссылку; она имеет вид « XXX»; если вы щелкните по ней, она выделится серым цветом и вы увидите, что у нее вначале стоит пробел. Хотя этот пробел выделен серым, т.е. относится к ссылке, он ведет себя как обычный «текстовый» пробел. Это значит, что предыдущее слово не нужно отделять еще одним пробелом.

7) Слово XXX (ваш термин, обозначение или аббревиатура) можно заменить на любое другое слово, например YYYYY или ZZ. Главное следовать простым правилам:
- Не трогать пробел вначале термина.
- Еще важно при замене слова XXX выделить только его и не выделять знак конца абзаца (справа от него), иначе перекрестная ссылка пропадет. Рекомендую пользоваться клавишей DELETE для удаления всех или только правого символа XXX – это надежно.

8) Пояснения:
Суть в том, что при вставке перекрестной ссылки создается закладка, границы которой определяются звездочками **. Если удалить звездочки, т.е. граничные символы закладки, то закладка будет разрушена, а вот внутренние символы закладки можно менять как угодно.

В момент вставки перекрестной ссылки, звездочки ** должны быть видны, а в остальное время скрыты. Именно поэтому я назвал стиль «_Полускрытым»; и в свойствах этого стиля время от времени нужно удалять или ставить галочку «скрытый» (как описано выше).

Пробел перед XXX это защитный промежуток, который защищает от распространения скрытого текста на XXX. Попробуйте удалить этот пробел и полностью заменить XXX, тогда вам все станет понятно.

9) Автоматизация с помощью макросов.
Вручную все это делать трудоемко, но с помощью макросов все рутинные повторяющиеся действия в Word 2003 и 2010 можно сократить буквально до одного клика (в Word 2007 результат похуже).

Я написал макросы, которые полностью соответствуют приведенному алгоритму, за исключение того, что название вставляется иным (но эквивалентным) способом: сначала вставляется пустое поле (CTRL+F9), затем внутри него печатается текст { SEQ Обозначение \* ARABIC  \* MERGEFORMAT }. Это позволяет вставить название сразу в ячейку таблицы.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

15

Re: Изменение данных источника перекрестной ссылки

Ниже привожу полный текст модуля. Полная работоспособность обеспечена в Word 2003 и 2010.
Макросов для исполнения всего два:
1) ВставитьОбозначение (щелкните по ячейке таблицы, затем выполните макрос, затем напечатайте ваш термин)
2) ВставитьСсылкуНаОбозначение (макрос бесполезен для Word 2007, но можете взять три первых команды для построения своих макросов)
Остальные макросы вспомогательные.


Option Explicit

Dim strCaptionName As String
Dim strStyleNameFont As String
Dim strStyleNameParagraph As String
Dim strBorder As String
Dim intLenOfBorder As Integer
    
Sub ЗадатьСтроковыеПеременные()
' Задает названия стилей, подпись названия, а также символы, которые определяют
' границы закладки

    strCaptionName = "Обозначение" ' подпись названия
    strStyleNameFont = "!!Полускрытый" ' название стиля знака
    strStyleNameParagraph = "_Обозначение" ' название стиля абзаца
    strBorder = "**" ' граничные символы для создания закладки
    
    intLenOfBorder = Strings.Len(strBorder) ' число граничных символов
    
End Sub

Sub СоздатьСтили()

    ' Создание стиля знака
    WordBasic.FormatStyle Name:=strStyleNameFont, _
    NewName:="", BasedOn:="", NextStyle:="", Type:=1, FileName:="", Link:=""
    With ActiveDocument.Styles(strStyleNameFont).Font
        .Name = ""
        .Hidden = True ' скрытый
    End With
    
    ' Создание стиля абзаца
    WordBasic.FormatStyle Name:=strStyleNameParagraph, _
        NewName:="", BasedOn:="Обычный", NextStyle:=strStyleNameParagraph, _
        Type:=0, FileName:="", Link:=""
        
End Sub

Sub СоздатьНазвания()

    ' Создание названия
    CaptionLabels.Add Name:=strCaptionName
        
    ' Настройка нумерации названия
    With CaptionLabels(strCaptionName)
        .NumberStyle = wdCaptionNumberStyleArabic
        .IncludeChapterNumber = False
    End With
    
End Sub

Sub ВставитьОбозначение()
' Вставка названия с подписью, записанной в переменной strCaptionName.
' Вставка граничных символов, записанных в переменной strBorder, справа
' и слева от названия.
'
' Также выполняется форматирование и создание названия.
'
' Закоментируйте вызов СоздатьСтили либо измените содержание макроса, если
' вас не устраивает форматирование стиля абзаца. Стиль знака трогать
' не нужно, т.к. там используется всего одна опция: скрытый текст или нет.

    ЗадатьСтроковыеПеременные ' задание строковых переменных
    
    СоздатьСтили ' создание стилей (закоментируйте строку если нужно)
            
    СоздатьНазвания ' эту операцию лучше оставить
            
    ' Делаем стиль знака открытым
    ActiveDocument.Styles(strStyleNameFont).Font.Hidden = False
            
    ' Вставляем поле
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
        
    ' Заполняем поле
    Selection.TypeText Text:="SEQ " + strCaptionName + " \* ARABIC " + _
        " \* MERGEFORMAT" ' MERGEFORMAT - сохранять формат при обновлении
        
    ' Устанавливаем курсор сразу после поля (на две позиции вправо)
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    
    ' Применяем стиль абзаца
    Selection.Style = ActiveDocument.Styles(strStyleNameParagraph)
    
    ' Вставляем граничные символы
    Selection.TypeText Text:=strBorder + " " + strBorder
            
    ' Выделяем правые граничные символы и применяем стиль знака
    Selection.MoveLeft Unit:=wdCharacter, Count:=intLenOfBorder, Extend:=wdExtend
    Selection.Style = ActiveDocument.Styles(strStyleNameFont)
    
    ' Перемещаем курсор к правой границе поля
    Selection.MoveLeft Unit:=wdCharacter, Count:=2 + intLenOfBorder
    
    ' Выделяем поле (SHIFT + ВЛЕВО)
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
       
    ' Применяем стиль знака к полю и обновляем его
    Selection.Style = ActiveDocument.Styles(strStyleNameFont)
    Selection.Fields.Update
       
    ' Жмем клавишу ВПРАВО
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    
    ' Выделяем левые граничные символы и применяем стиль знака
    Selection.MoveRight Unit:=wdCharacter, Count:=intLenOfBorder, Extend:=wdExtend
    Selection.Style = ActiveDocument.Styles(strStyleNameFont)
    
    ' Жмем клавишу ВПРАВО дважды (чтобы сместиться на одну позицию вправо)
    Selection.MoveRight Unit:=wdCharacter, Count:=2
       
    ' Делаем стиль знака скрытым
    ActiveDocument.Styles(strStyleNameFont).Font.Hidden = True
       
End Sub

Sub ВставитьСсылкуНаОбозначение()
' Макрос для вставки перекрестной ссылки на обозначение.
'
' Перед открытием диалогового окна стиль знака делается открытым, а
' при закрытии - снова скрывается. В диалоговом окне с помощью SendKeys
' (виртуальные нажатия клавиш) выбирается тип ссылки.
'
' Макрос работает абсолютно правильно в версиях Word 2003 и 2010.
' В Word 2007 не работает метод SendKeys, поэтому макрос не может
' выбрать тип ссылки.

    ЗадатьСтроковыеПеременные ' обязательно нужно выполнить, иначе повиснет!
    
    СоздатьНазвания ' эту операцию лучше оставить
    
    ' Делаем стиль знака открытым
    ActiveDocument.Styles(strStyleNameFont).Font.Hidden = False
    
    ' Вызов диалога вставки перекрестной ссылки
    With Dialogs(wdDialogInsertCrossReference)
                
        ' Нажитие клавиши первого (левого) символа подписи
        SendKeys Strings.Left(strCaptionName, 1)
        
        SendKeys "{enter}"
        SendKeys "{tab}"
        SendKeys "{down 3}" ' вставить ссылку на: Только текст названия (строка 3)
        SendKeys "{enter}"
        SendKeys "{tab}"
        SendKeys "г" ' ставит галочку вставить как гиперссылку
        .Show
        
    End With
    
    ' Делаем стиль знака скрытым
    ActiveDocument.Styles(strStyleNameFont).Font.Hidden = True
    
End Sub
Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

16

Re: Изменение данных источника перекрестной ссылки

Привет. Измучился я уже с этой автоматизацией. Нашел вроде решение что бы ссылки не убивались при изменении первоначального текста. Делаю "Вставка элемента управления содержимым "обычный текст"", ставлю галочку "элемент управления содержимым нельзя удалить", делаю закладку на этот элемент. Все работает, закладка не убиваема, удаляем текст внутри этого элемента, пишем новый, все копируется по документу, НО только в ворд 2007, при открытии этого документа в 2010 начинаются проблемы, если полностью удаляю текст в элементе то он больше не заменяется в документе, сама закладка не "убивается" ссылка на нее то же отображается, но обновление текста не происходит. Приложу пример документа, создан в ворд 2007.

Post's attachments

Пример.docx 15.33 Кб, 5 скачиваний с 2014-03-04 

You don't have the permssions to download the attachments of this post.

17

Re: Изменение данных источника перекрестной ссылки

Dmitrii пишет:

Все работает, закладка не убиваема, удаляем текст внутри этого элемента, пишем новый, все копируется по документу, НО только в ворд 2007, при открытии этого документа в 2010 начинаются проблемы, если полностью удаляю текст в элементе то он больше не заменяется в документе, сама закладка не "убивается" ссылка на нее то же отображается, но обновление текста не происходит.

Dmitrii, у вас код поля ссылки выглядит так: { А1 }, т.е. используется только имя закладки без поля  REF.
Попробуйте заменить его на
{ REF  А1 \h  \* MERGEFORMAT }.
(Ключ \h вставляет гиперссылку на источник,
ключ \* MERGEFORMAT позволяет сохранять формат при обновлении ссылки, хотя можно обойтись и без дополнительных ключей, если такие возможности не требуются).
В ворд 2010 не проверял, но должно работать.

18

Re: Изменение данных источника перекрестной ссылки

Dmitrii пишет:

Все работает, закладка не убиваема, удаляем текст внутри этого элемента, пишем новый, все копируется по документу, НО только в ворд 2007, при открытии этого документа в 2010 начинаются проблемы, если полностью удаляю текст в элементе то он больше не заменяется в документе, сама закладка не "убивается" ссылка на нее то же отображается, но обновление текста не происходит.

Dmitrii, в приложенном документе код поля ссылки выглядит так: { А1 }, т.е. используется только имя закладки без поля  REF.
В Ворд 2010, видимо, возможность создания ссылки непосредственно по имени закладки отключена.
Попробуйте использовать такой код поля ссылки:
{ REF  А1 \h  \* MERGEFORMAT }.
(Ключ \h вставляет гиперссылку на источник,
ключ \* MERGEFORMAT позволяет сохранять формат при обновлении ссылки, хотя можно обойтись и без дополнительных ключей, если такие возможности не требуются).
Или воспользуйтесь стандартным диалогом для вставки перекрестной ссылки (тип ссылки "Закладка", вставить ссылку на "Текст закладки").

19

Re: Изменение данных источника перекрестной ссылки

Не работают данные варианты в ворд 2010, 10-й установлен на работе, попробовал создал документ (пример прикрепил) то же самое что и описывал выше, дома установлен 2007-й открыл этот же документ-все работает. Может дело в настройках 2010?

Post's attachments

Пример.docx 17.93 Кб, 1 скачиваний с 2014-03-05 

You don't have the permssions to download the attachments of this post.

20

Re: Изменение данных источника перекрестной ссылки

Dmitrii пишет:

Делаю "Вставка элемента управления содержимым "обычный текст"", ставлю галочку "элемент управления содержимым нельзя удалить", делаю закладку на этот элемент..

То, что вы называете "элемент управления содержимым "обычный текст"" в вашем документе таковым не является.
В приложенном мною документе вслед за вашим текстом я поместил то, что у меня происходит при действиях:  вкладка ленты "Разработчик" нажать кнопку  "Вставка элемента управления содержимым "обычный текст"". Сразу после создания элемент управления содержимым содержит местозаполнитель серого цвета
с текстом "Место для ввода текста"
После удаления вручную набранного текста в пустом элементе управления вновь появляется местозаполнитель.

Post's attachments

Пример (2).docx 19.24 Кб, 5 скачиваний с 2014-03-07 

You don't have the permssions to download the attachments of this post.

21

Re: Изменение данных источника перекрестной ссылки

Не заметил разницы, у меня тоже самое, я еще поставил галку в "Свойства" на "Элемент содержимым нельзя удалить". Вы еще назвали элемент управления "ФИО", у меня он без названия. Но суть в том что это не работает в ворд 2010, не знаю почему. Может настройки какие то надо выставить? Скачал, сейчас на работе попробую, там 2010 установлен.