Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как отловить событие изменения "элемента управления содержимым" в документе Word 2010? / 7 сообщений из 7, страница 1 из 1
06.09.2012, 17:29
    #37947083
samart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
Доброго всем дня! Я новичок в VBA, поэтому простите, пожалуйста, если вопрос тупой, и не по делу.

Планируется создать шаблон в Office Word 2010 для ввода данных в специальные текстовые поля (чтобы в дальнейшем легче было получить значения этих полей и записать их в обычный txt).
В шаблоне уже есть поле "Введите пункт", которое получилось путем добавления "Элемента управления содержимым" (wdContentControlRichText) в документ. Нужно, чтобы, когда пользователь вводит свой текст в это поле, ниже в документе появлялось еще одно такое же поле для ввода. Макросом добавить еще один такой же "Элемент управление содержимым" у меня получилось (правильно ли это делать через макрос?), а вот как отловить событие ввода данных в этот "элемент", чтобы через макрос ниже вставлялся прямо в документ еще один такой же "элемент", не понимаю... Везде, где искал информацию, используются формы для этого. А реально ли это сделать без использования форм, используя только макросы? И вообще, как правильно это реализовать?

Надеюсь на внятное разъяснение или, хотя бы, ссылку, куда копать.
...
Рейтинг: 0 / 0
06.09.2012, 20:00
    #37947323
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
Ну, и используйте формы...
Просто у вас получается, что вам надо, чтобы макрос создавал следующий элемент для ввода, плюс привязывал к нему эвент. Даже если написать макрос, который будет обрабатывать всю коллекцию ваших "объектов ввода" разом - привязку событий программировать "на лету" не так-то просто.
А чем вам формы-то не угодили?
...
Рейтинг: 0 / 0
06.09.2012, 20:35
    #37947343
катастрофа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
samart, создать таблицу и не боятся, а по окончанию заполнения таблицы запустили прогу - она проверит и растолкает куда надо
...
Рейтинг: 0 / 0
06.09.2012, 22:20
    #37947435
samart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
AndreTM , катастрофа , спасибо за отклики.

AndreTM ,

Дело в том, что стоит задача максимально скрыть от пользователя то, что он работает с формой и программой на VBA. То есть он должен считать, что он просто открыл шаблон, перед ним будто бы обычный документ Word и заранее заготовлено поле для его текста. Захотел - вписал свой пункт, добавился еще один. Не захотел - ничего не добавилось, осталось одно заполненное поле. А указывать пользователю нажимать кнопки на форме, вписывать что-то в textbox'ы - лишнее, просят обойтись без этого. За совет спасибо, прислушаюсь.

катастрофа ,

Вы имеете в виду обыную таблицу Word? То есть предложить пользователю заполнять ее построчно, а потом из макроса обращаться к каждой строке (ячейке) и вытаскивать оттуда текст? И всё это делать по сохранению документа?
...
Рейтинг: 0 / 0
06.09.2012, 22:29
    #37947446
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
samart,

Странно.. для планктона что "заполнил поле - появилось еще одно", что "заполнил поле в форме - появилось еще одно" - ИМХО, параллельно, поскольку "как им объяснили тыкать в кнопки - так и будет". НЕпланктон же - и так поймет, что работает с программой...
...
Рейтинг: 0 / 0
07.09.2012, 05:30
    #37947636
Сын вождя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
Создаем закладку на вашем поле. Ниже вставляетм перекрестную ссылку на эту закладку. Решение как раз для описанной вами задачи :)

Есть два события элементов управления, которые можно перехватить, добавив в документ макросы:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As Word.ContentControl) ' вход в элемент
End Sub

Private Sub Document_ContentControlOnExit(ByVal ContentControl As Word.ContentControl, Cancel As Boolean) ' выход из элемента
End Sub
...
Рейтинг: 0 / 0
11.09.2012, 09:46
    #37952041
samart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
Сын вождя ,

Большое спасибо! Попробовал со ссылками так, как Вы сказали, получилось, но несколько не то, что надо, ссылка получалась, поле добавлялось, но оно уже утрачивало свойства wdContentControlRichText, как контрола. Но я воспользовался событиями, которые Вы предложили, и в итоге просто добавил через в новом абзаце по такому контролу.

Код получился такой:

Код макроса:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Sub AddItem()
'
' AddItem Макрос
'
    ActiveDocument.Paragraphs.Add
    ActiveDocument.Paragraphs.Add
    Selection.EndKey wdStory, wdMove
    Selection.Range.ContentControls.Add (wdContentControlRichText)
    Selection.TypeText Text:="Добавьте пункт"
    Selection.ParentContentControl.Title = "Пункт"
    Selection.ParentContentControl.Tag = "Item"
End Sub



Код обработки события:

Код: vbnet
1.
2.
3.
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
AddItem
End Sub



Проблема, однако, еще в том, что при добавлении нового элемента курсор вставки перемещается внутрь нового элемента, а нужно, чтобы он оставался в старом элементе. Манипуляции с GoTo как-то не очень получились у меня( Как можно сделать?
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как отловить событие изменения "элемента управления содержимым" в документе Word 2010? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]