В Word, как я могу изменить данные слияния почты программно с VBA?
-
10-07-2019 - |
Вопрос
У меня есть документ Word, который используется в качестве исходного документа для слияния. Я могу редактировать документ, но не данные, используемые для слияния. Мне нужно преобразовать некоторые данные в источнике данных (в частности, мне нужно взять числа (например, 342) и добавить их значение в словах (например, «триста сорок два (342)»)). Я могу написать функцию VBA для выполнения преобразования, но я не уверен, как лучше всего получить данные для этой функции.
Есть ли способ связать макрос с конкретными точками в документе и позволить объединению управлять процессом преобразования? (Я думаю о том, как вы можете использовать формулы в полях Word; у меня есть несколько вещей вида {IF {MERGEFIELD foo} > 75 {MERGEFIELD foo} {= {MERGEFIELD foo} * 20 }}
в документе уже. Если бы я мог что-то добавить, я мог бы перейти {FUNCTION WordNum {MERGEFIELD number}}
, это было бы идеально.) р>
С другой стороны, я думаю, что могу использовать VBA для поиска в источнике данных слияния (в частности, document.MailMerge.DataSource
) и переписать поля. Если я пойду по этому пути, где я должен выполнить макрос, чтобы он попадал в данные после того, как они были прочитаны из источника данных, но до того, как они были объединены с документом?
Решение 2
Кажется, что нет способа вызова произвольных функций из встроенных макросов Word, поэтому я пошел по пути VBA.
Я добавил макрос AutoOpen
в исходный документ с именем MailMerge.EditDataSource
, а затем прошел по таблице, чтобы внести в нее изменения.
Другие советы
Не могли бы вы выполнить преобразование данных в Microsoft Query? То есть где у вас сейчас есть:
Data Source -> Mail Merge Template
создайте Microsoft Query, который находится между вашим источником данных и Word:
Data Source -> Microsoft Query -> Mail Merge Template
Прошло много времени с тех пор, как я использовал Mail Merge в Word, но я не помню, чтобы я мог контролировать его ...