1

Тема: Проверить условие и запустить макрос в поле

Добрый день! Есть поле с кодом, например:
{IF order>=100 "запустить макрос1" "запустить макрос2"}
Есть ли код, который позволяет запускать макросы при выполнении условий?
Т.е. если order>=100 тогда запускается макрос1, иначе - запускается макрос2.

2

Re: Проверить условие и запустить макрос в поле

В приложение, описание кодов полей с примерами. Файл был предоставлен крутыми дядьками с этого форума.
Мое мнение, если бы такая возможность была, был бы

Post's attachments

Word_Коды полей 01.docx 211.25 Кб, 2 скачиваний с 2019-02-28 

You don't have the permssions to download the attachments of this post.
"Ты не умничай, ты пальцем покажи"
"Кто поработал с многоуровневым списком в Ворде, тот в цирке не смеется"

3

Re: Проверить условие и запустить макрос в поле

AlexStar пишет:

В приложение, описание кодов полей с примерами. Файл был предоставлен крутыми дядьками с этого форума.
Мое мнение, если бы такая возможность была, был бы

"полный капец" безопасности всего компа. Сами подумайте.

"Ты не умничай, ты пальцем покажи"
"Кто поработал с многоуровневым списком в Ворде, тот в цирке не смеется"

4

Re: Проверить условие и запустить макрос в поле

AlexStar пишет:
AlexStar пишет:

В приложение, описание кодов полей с примерами. Файл был предоставлен крутыми дядьками с этого форума.
Мое мнение, если бы такая возможность была, был бы

"полный капец" безопасности всего компа. Сами подумайте.

Был как-то на руках файл docx, в котором автоматом ссылка открывалась. Такое себе удовольствие.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5

Re: Проверить условие и запустить макрос в поле

Route пишет:

Добрый день! Есть поле с кодом, например:
{IF order>=100 "запустить макрос1" "запустить макрос2"}
Есть ли код, который позволяет запускать макросы при выполнении условий?
Т.е. если order>=100 тогда запускается макрос1, иначе - запускается макрос2.

Не очень понятно, когда вы собираетесь анализировать условие: когда поле IF только что введено или когда оно обновляется. Я иногда ввожу в документ нестандартные поля, либо параметры полей, чтобы при обновлении полей выполнять дополнительную обработку. Я имею в виду, что я пользуюсь своим макросом обновления всех полей и в процессе его исполнения анализирую поля необходимых типов.
Например, в вашем случае я так бы решал проблему (возможно, этот подход подскажет вам, как решить вашу задачу):
1. Указал бы поле IF нестандартный параметр типа
    { IF "\MYMAC\|ORDER|GE|100|\M1\M2\" \h }/
2. Доработал бы свой макрос обновления полей так, чтобы он отдельно обрабатывал поля IF.
Конечно, сначала второе, потом первое ))
Макрос обновления всех полей в документе должен в том числе обойти поля IF.
Если в поле IF параметр начинается с комбинации символов \MYMAC, то значит необходимо выполнить специальную обработку. Далее, легко разбирая по разделителям остаток параметра поля, макрос должен оценить условие, что подпараметр-пользовательское свойство ORDER больше или равно (GE) чем значение третий подпараметр. Если условие выполняется, то должен быть вызван макрос M1, если нет - то М2. В момент же набора текста поля в документе ничего происходить не будет, а результат поля будет пустым (из-за флага \h).

6

Re: Проверить условие и запустить макрос в поле

yshindin пишет:

. . .
1. Указал бы поле IF нестандартный параметр типа
    { IF "\MYMAC\|ORDER|GE|100|\M1\M2\" \h }/
. . .

Прошу прощения, лишний слэш напечатал в конце примера поля.

Забыл еще пример привести из жизни. Предположим, вам необходимо указывать в сводном документе таблицу с размерами других документов комплекта в байтах . Напр., это может быть "Ведомость машинных носителей информации" - кто разрабатывал документацию по ГОСТ, тот знает, что это такое. Тогда в сводном документе вместо размеров необходимо использовать обновляемые знакоместа, которые можно реализовать через нестандартные поля, закладки и т.д. Я это реализовал через элементы управления содержимым (Content Control или ЭУС). Эти ЭУС я обрабатывал все в том же макросе обновления всех полей документа (отдельно от цикла обработки полей).  То есть, обновляешь в документе все поля своим макросом, а он заодно и подправляет размеры документов.