|
23.05.2011, 14:56 | #1 |
Участник
|
Проблема с VBA for Word
Вопрос возник в процессе заполнения печатных форм с использованием слияния.
Задача: В процессе MailMerge нужно одно из полей MergeField разбить на отдельные символы и этими символами заполнить указанные места в документе. Мой вариант решения: Написан обработчик события MailMergeBeforeMerge, который срабатывает перед каждым слиянием. В этом событии выполнялся find and replace, для заранее вписанных в документ меток на выбранный символ из нужного поля. Данный код работал на тестовой среде, но на сервере заказчика этот код не работает. Далее была попытка использовать DocVariable, но их подстановка осуществляется до начала слияния. Дополнение: - код по замене работает если написать его в открытие документа - событие MailMergeBeforeMerge срабатывает, но код не выполняет замену, при этом никаких ошибок не выдает. Код: PHP код:
|
|
23.05.2011, 17:04 | #2 |
Moderator
|
Цитата:
Некоторые задачи формирования печатных форм все же проще решать не через слияние, а путем формирования контента из кода. В случае, когда без разработчика обойтись не получится, существенной разницы не вижу.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
23.05.2011, 17:44 | #3 |
Участник
|
Цитата:
Согласен, но в случае слияния проще в дальнейшем редактировать формы документов, которые могут меняться. Точнее для редактирования форм требуется меньшая квалификация. |
|
23.05.2011, 22:55 | #4 |
Moderator
|
Почему вы считаете что макрос работает, если результатов его работы нет? Возможно я просто не так понял.
Насчет гибкости слияния не спорю, но никто не заставляет полностью отказываться от шаблонов. Аналогично размещению полей слияния можно размещать в шаблоне метки и другие настраиваемые поля, которые будет обрабатывать ваш код. В случае если вы, например, решите создать печатную форму для заказа, то иной возможности поместить в документ таблицу со строками заказа не будет.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
24.05.2011, 15:42 | #5 |
Участник
|
Цитата:
Цитата:
Сообщение от Артем Enot Грунин
Насчет гибкости слияния не спорю, но никто не заставляет полностью отказываться от шаблонов. Аналогично размещению полей слияния можно размещать в шаблоне метки и другие настраиваемые поля, которые будет обрабатывать ваш код. В случае если вы, например, решите создать печатную форму для заказа, то иной возможности поместить в документ таблицу со строками заказа не будет.
С печатными формами заказов и аналогичными формами понятно, но в данном случае такого функционала нет и не планируется. |
|
25.05.2011, 16:46 | #6 |
Участник
|
Я нашел решение, как исправить код, чтобы он работал:
надо Selection.Find заменить на Doc.Range.Find |
|