|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
Доброго всем дня! Я новичок в VBA, поэтому простите, пожалуйста, если вопрос тупой, и не по делу. Планируется создать шаблон в Office Word 2010 для ввода данных в специальные текстовые поля (чтобы в дальнейшем легче было получить значения этих полей и записать их в обычный txt). В шаблоне уже есть поле "Введите пункт", которое получилось путем добавления "Элемента управления содержимым" (wdContentControlRichText) в документ. Нужно, чтобы, когда пользователь вводит свой текст в это поле, ниже в документе появлялось еще одно такое же поле для ввода. Макросом добавить еще один такой же "Элемент управление содержимым" у меня получилось (правильно ли это делать через макрос?), а вот как отловить событие ввода данных в этот "элемент", чтобы через макрос ниже вставлялся прямо в документ еще один такой же "элемент", не понимаю... Везде, где искал информацию, используются формы для этого. А реально ли это сделать без использования форм, используя только макросы? И вообще, как правильно это реализовать? Надеюсь на внятное разъяснение или, хотя бы, ссылку, куда копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 17:29 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
Ну, и используйте формы... Просто у вас получается, что вам надо, чтобы макрос создавал следующий элемент для ввода, плюс привязывал к нему эвент. Даже если написать макрос, который будет обрабатывать всю коллекцию ваших "объектов ввода" разом - привязку событий программировать "на лету" не так-то просто. А чем вам формы-то не угодили? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 20:00 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
samart, создать таблицу и не боятся, а по окончанию заполнения таблицы запустили прогу - она проверит и растолкает куда надо ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 20:35 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
AndreTM , катастрофа , спасибо за отклики. AndreTM , Дело в том, что стоит задача максимально скрыть от пользователя то, что он работает с формой и программой на VBA. То есть он должен считать, что он просто открыл шаблон, перед ним будто бы обычный документ Word и заранее заготовлено поле для его текста. Захотел - вписал свой пункт, добавился еще один. Не захотел - ничего не добавилось, осталось одно заполненное поле. А указывать пользователю нажимать кнопки на форме, вписывать что-то в textbox'ы - лишнее, просят обойтись без этого. За совет спасибо, прислушаюсь. катастрофа , Вы имеете в виду обыную таблицу Word? То есть предложить пользователю заполнять ее построчно, а потом из макроса обращаться к каждой строке (ячейке) и вытаскивать оттуда текст? И всё это делать по сохранению документа? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 22:20 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
samart, Странно.. для планктона что "заполнил поле - появилось еще одно", что "заполнил поле в форме - появилось еще одно" - ИМХО, параллельно, поскольку "как им объяснили тыкать в кнопки - так и будет". НЕпланктон же - и так поймет, что работает с программой... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 22:29 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
Создаем закладку на вашем поле. Ниже вставляетм перекрестную ссылку на эту закладку. Решение как раз для описанной вами задачи :) Есть два события элементов управления, которые можно перехватить, добавив в документ макросы: Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 05:30 |
|
Как отловить событие изменения "элемента управления содержимым" в документе Word 2010?
|
|||
---|---|---|---|
#18+
Сын вождя , Большое спасибо! Попробовал со ссылками так, как Вы сказали, получилось, но несколько не то, что надо, ссылка получалась, поле добавлялось, но оно уже утрачивало свойства wdContentControlRichText, как контрола. Но я воспользовался событиями, которые Вы предложили, и в итоге просто добавил через в новом абзаце по такому контролу. Код получился такой: Код макроса: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Код обработки события: Код: vbnet 1. 2. 3.
Проблема, однако, еще в том, что при добавлении нового элемента курсор вставки перемещается внутрь нового элемента, а нужно, чтобы он оставался в старом элементе. Манипуляции с GoTo как-то не очень получились у меня( Как можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2012, 09:46 |
|
|
start [/forum/topic.php?fid=61&msg=37952041&tid=2175402]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 450ms |
0 / 0 |