1

Тема: Помогите с созданием зависимых элементов управления содержимым

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

Блоки эти, насколько я понял, организуются (элементами управления содержимым/Текст). Но когда я сам задаю такой блок (элемент управления) и разбрасываю его по шаблону документа его содержимое в каждом отдельно взятом текстовом блоке может быть индивидуальным и не зависеть от того что будет в другом блоке.
Вопрос: как их связать?

Прошу прощения если как-то криво изъясняюсь, просто на тернистый путь познания  возможностей MS Office встал буквально пару дней назад...  smile Для наглядности описанного вложил пример.

Post's attachments

Test.docx 18.18 Кб, 25 скачиваний с 2011-03-22 

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

2

Re: Помогите с созданием зависимых элементов управления содержимым

Добрый день!

Думаю, что задача обозначенная предыдущим постом, совпадает с моей задачей. Я её сформулировала так:

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

Часть редактируемых полей провторяет свое значение. Например, номер договора в заголовке текста и этот же номер в теле текста. Название контрагента в преамбуле и это же название в реквизитах.

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

Сообщите пжлст как это реализовать в ворде.

Спасибо заранее!

3

Re: Помогите с созданием зависимых элементов управления содержимым

Привет!
+ Baloo, а вы можете сказать, как создавали экспресс-блок, отличный от стандартного?
Спасибо!

4

Re: Помогите с созданием зависимых элементов управления содержимым

Экспресс-блок создаётся достаточно просто:
выделяется фрагмент текста, который Вы хотите применить в качестве экспресс-блока, затем на ленте, в меню "Вставка" нажимаем кнопочку "Экспресс-блоки" и выбираем пункт "Сохранить выделенный фрагмент в коллекцию экспресс-блоков" (см.картинку). Дальше выйдет форма с параметрами сохранения экспресс-блока, заполнив её и нажав "Ок" получим новый экспресс-блок. Находится экспресс-блок будет в месте, указанном Вами в форме сохранения в меню "Коллекция". По умолчанию там выбрано "Экспресс-блоки" и блок будет доступен именно там, но можно это место и изменить, например на титульную страницу, содержание и т.д.

Post's attachments

Сохранить свой экспресс-блок.bmp 1.35 Мб, 12 скачиваний с 2011-11-22 

You don't have the permssions to download the attachments of this post.
Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

5

Re: Помогите с созданием зависимых элементов управления содержимым

Вот тот же рисунок, только меньше мегабайтов.

Post's attachments

Сохранить свой экспресс-блок.gif 68.76 Кб, 1 скачиваний с 2011-11-22 

You don't have the permssions to download the attachments of this post.
Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

6

Re: Помогите с созданием зависимых элементов управления содержимым

min-mv пишет:

Привет!
+ Baloo, а вы можете сказать, как создавали экспресс-блок, отличный от стандартного?
Спасибо!

Создание форм, заполняемых в приложении Word

7

Re: Помогите с созданием зависимых элементов управления содержимым

Доброй ночи!
Прошу помощи именно в данной теме, потому что ответ на поставленный ТС вопрос, так и не был мной найден.

Есть экспресс блоки со свойствами документов, заполняем вставляем в разные места, редактируем все везде меняется, все счастливы, но можно ли реализовать это не через свойства документа???
Еще раз опишу задачу:
Есть документ, в нем, предположим, есть последняя страница, которую человек заполняет и автоматически везде в определенных местах заполняется, то что было прописано на данной странице.

Варианты с закладками не то, так как они привязаны к точному тексту, указанному в закладе, при изменении этого текста ничего нигде не поменяется.
Вариант со св-вами документа рабочий, но хочется найти выход, в элементах управления, при создании формы текст не вяжется с копией этой формы, инфы не нашел по данному моменту.
Буду рад любой помощи.

8

Re: Помогите с созданием зависимых элементов управления содержимым

lex0r пишет:

Доброй ночи!
Есть экспресс блоки со свойствами документов, заполняем вставляем в разные места, редактируем все везде меняется, все счастливы, но можно ли реализовать это не через свойства документа???
Еще раз опишу задачу:
Есть документ, в нем, предположим, есть последняя страница, которую человек заполняет и автоматически везде в определенных местах заполняется, то что было прописано на данной странице.

В Ворд 2007 и более поздних версиях задача решается при помощи связывания XML данных (XML Mapping)
Надстройку Content Control Tools (автор Gregory K. Maxey), которая позволяет создавать связанные элементы управления содержимым, можно скачать с сайта автора:
внешняя ссылка
Я пользуюсь этой надстройкой уже более 2-х лет. Могу сказать только, что это великолепный инструмент, обладающий большими возможностями.
Если возникнут вопросы по работе с надстройкой, попытаюсь ответить.

9

Re: Помогите с созданием зависимых элементов управления содержимым

Что-то не получилось поставить этот макрос, пишет, что макрос не найдет или настройки безопасности не позволяют включить (отключал их все равно не работает, хотя иконка надстройки появляется)

10

Re: Помогите с созданием зависимых элементов управления содержимым

lex0r пишет:

Что-то не получилось поставить этот макрос, пишет, что макрос не найдет или настройки безопасности не позволяют включить (отключал их все равно не работает, хотя иконка надстройки появляется)

А какая у Вас версия Word?

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

11

Re: Помогите с созданием зависимых элементов управления содержимым

Alex_Gur пишет:
lex0r пишет:

Что-то не получилось поставить этот макрос, пишет, что макрос не найдет или настройки безопасности не позволяют включить (отключал их все равно не работает, хотя иконка надстройки появляется)

А какая у Вас версия Word?

2016 ворд

12

Re: Помогите с созданием зависимых элементов управления содержимым

lex0r пишет:

2016 ворд

Может быть, из-за этого...

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

13

Re: Помогите с созданием зависимых элементов управления содержимым

Alex_Gur пишет:
lex0r пишет:

2016 ворд

Может быть, из-за этого...

Удалось запустить в том числе и на 16 ворде, может подскажете, после того как создал пару форм, заканчиваю работу в этом макросе, но заново в этом документе его уже не открыть, до тех пор пока не удалю все добавленные мной формы, вылетает такая вот ошибка внешняя ссылка, сталкивались с такой проблемой ?

14

Re: Помогите с созданием зависимых элементов управления содержимым

Да, проблема с версией 3.0, которую можно скачать  по указанной мною ссылке, в настоящее время существует. Грег в версии 3.0 серьезно расширил функционал, и что-то у него не срослось. Я думаю, в скором времени с выходом очередной версии проблема будет устранена.
Я пользовался надстройкой версии 2.2, которую скачал довольно давно и проблем замечено не было.

Можно предложить другой способ связывания содержимого ContentControls - с помощью макроса, который отслеживает изменения, используя событие Document.ContentControlOnExit  (макрос срабатывает, когда ContentControl теряет фокус ввода)

Option Explicit

Private Sub Document_ContentControlOnExit(ByVal cc As ContentControl, Cancel As Boolean)

Dim i As Long
Dim myTitle$, mytext$, mytype$
Dim ccS As ContentControl

myTitle = cc.Title
mytype = cc.Type
If (Len(myTitle) < 1) Or (mytype <> wdContentControlText) Then Exit Sub
mytext = cc.Range.Text
With ActiveDocument.ContentControls
    For i = 1 To .Count
        Set ccS = .Item(i)
        If ccS.Type = wdContentControlText And ccS.Title = myTitle Then
            ccS.Range.Text = mytext
        End If
    Next i
End With

End Sub

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

Post's attachments

Сязь контролов через макрос.docm 55.67 Кб, 19 скачиваний с 2016-08-23 

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

15

Re: Помогите с созданием зависимых элементов управления содержимым

очень понравилась такая реализация автоматизации процесса составления договоров, но не могу никак ее реализовать в своих документах. можно пошагово разъяснить, что и за чем нужно делать. спасибо большое

Boris_R пишет:

Да, проблема с версией 3.0, которую можно скачать  по указанной мною ссылке, в настоящее время существует. Грег в версии 3.0 серьезно расширил функционал, и что-то у него не срослось. Я думаю, в скором времени с выходом очередной версии проблема будет устранена.
Я пользовался надстройкой версии 2.2, которую скачал довольно давно и проблем замечено не было.

Можно предложить другой способ связывания содержимого ContentControls - с помощью макроса, который отслеживает изменения, используя событие Document.ContentControlOnExit  (макрос срабатывает, когда ContentControl теряет фокус ввода)

Option Explicit

Private Sub Document_ContentControlOnExit(ByVal cc As ContentControl, Cancel As Boolean)

Dim i As Long
Dim myTitle$, mytext$, mytype$
Dim ccS As ContentControl

myTitle = cc.Title
mytype = cc.Type
If (Len(myTitle) < 1) Or (mytype <> wdContentControlText) Then Exit Sub
mytext = cc.Range.Text
With ActiveDocument.ContentControls
    For i = 1 To .Count
        Set ccS = .Item(i)
        If ccS.Type = wdContentControlText And ccS.Title = myTitle Then
            ccS.Range.Text = mytext
        End If
    Next i
End With

End Sub

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