Коды полей: поле MERGEFIELD — Word
Отображает в основном документе для слияния имя поля данных, заключенное в шевроны (пример: «Имя»). Когда выполняется слияние основного документа с выбранным источником данных, информация из указанного поля данных вставляется на месте поля слияния.
В предыдущих версиях Word в объединенных документах на месте полей, сопоставленных с отсутствующими данными, часто отображались двойные пробелы. Теперь вы можете использовать ключи, чтобы указать, какой текст будет печататься до или после значения поля (если в нем есть данные).
Перед вставкой полей слияния для основного документа следует указать источник данных.
Синтаксис
{ MERGEFIELD ИмяПоля [Ключи]}
Примечание: Код поля определяет то, что будет отображаться в поле. Результаты поля — это то, что отображается в документе после оценки кода поля. Для переключения между кодом поля и его результатами нажмите сочетание клавиш ALT+F9.
Инструкции
«ИмяПоля»
Имя поля данных, содержащееся в заголовке выбранного источника данных Указанное имя поля должно точно совпадать с именем одного из полей в записи заголовка.
Ключи
\b
Определяет текст, вставляемый перед полем MERGEFIELD, если оно не пустое.\f
Определяет текст, вставляемый после поля MERGEFIELD, если оно не пустое.
\m
Указывает, что поле MERGEFIELD является сопоставленным полем.
\v
Разрешает преобразование знаков для вертикального форматирования.
Пример
При использовании трех полей MERGEFIELD и ключа \f, как показано ниже, между этими тремя полями вставляются пробелы (только если в источнике данных указаны сведения для соответствующих полей).
{ MERGEFIELD Обращение \f » » }{ MERGEFIELD Имя \f » » }{ MERGEFIELD Фамилия }
Результат:
-
Если в источнике данных указаны сведения для всех полей: Госпожа Ольга Зуева
-
Если в источнике данных отсутствуют сведения для поля «Имя»: Госпожа Зуева
Примечание: Если вам нужно изменить имя поля, указанного в поле слияния, следует сделать это в кодах поля MERGEFIELD. Если коды полей будут скрыты, изменение имени поля не даст желаемого эффекта.
support.office.comvba — Вложенное поле IF в Word VBA
Я пытаюсь создать слово addin, которое добавляет сложное создание IF Statement, из списка возможных полей mergefield.
Комплекс
{ IF { = OR ( { COMPARE { MERGEFIELD Field_1 } <= "Value" }, { COMPARE { MERGEFIELD Field_2 } >= "Value" } ) } = 1 "True Instructions" "False Instructions" }
Я пытаюсь сделать все это в VBA, но у меня возникают проблемы с моим комплексом, если, поскольку я не могу получить «}» для завершения в правильных местах.
Если я использую терминатор «Selection.EndKey Unit: = wdLine» в любом другом месте, кроме конца, он создает беспорядок и путёт все} в этой строке.
Вот мой код:
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:="IF " Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:=" = " & JointOperator1 & " ( " 'FIRST ARG Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:="COMPARE " Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False, Text:="MERGEFIELD " & FirstArg1 Selection.TypeText Text:=" " Selection.TypeText Text:=ComparisonType1 Selection.TypeText Text:=" " Selection.TypeText Text:=Chr(34) & SecondArg1 & Chr(34) Selection.TypeText Text:=", " 'SECOND ARG Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:="COMPARE " Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False, Text:="MERGEFIELD " & FirstArg2 Selection.TypeText Text:=" " Selection.TypeText Text:=ComparisonType2 Selection.TypeText Text:=" " Selection.TypeText Text:=Chr(34) & SecondArg2 & Chr(34) Selection.TypeText Text:=" ) " Selection.TypeText Text:=" = 1 " Selection.TypeText Text:=vbCrLf & " " & Chr(34) Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:=strTempIfTrue Selection.TypeText Text:=Chr(34) & " " & vbCrLf Selection.TypeText Text:=" " & Chr(34) Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _ PreserveFormatting:=False Selection.TypeText Text:=strTempIfFalse Selection.TypeText Text:=Chr(34) Selection.EndKey Unit:=wdLine Selection.TypeParagraph
И это то, что я получаю при создании «Complex if»
{IF { = AND ( {COMPARE{MERGEFIELD FHB} = "T", { COMPARE {MERGEFIELD BLAH} = "F") = 1 "If True text" "If False Text"}}}}
Но это должно быть так:
{IF { = AND ( {COMPARE{MERGEFIELD FHB} = "T" **}** , { COMPARE {MERGEFIELD BLAH} = "F" **}** ) **}** = 1 "If True text" "If False Text"}
Если кто-то может пролить свет на этот вопрос, где я ошибаюсь. Или, если есть способ заставить местоположение Ending}, это было бы здорово, я очень новичок в VBA (я программист C++),
qaru.site
Microsoft Office Word и LibreOffice Writer (часть II)
В первой части заметки были рассмотрены различия между Word и Writer, касающиеся преимущественно основных средств работы с документами. Теперь же хотелось бы рассказать о средствах специальных и прежде всего – об использовании полей. Нет, не про поля страницы, а про особые объекты, внедряемые в документ. Соответствующая сноровка в использовании полей превращает их в очень мощные инструменты, сильно облегчающие оформление документов. На мой субъективный взгляд реализация работы с полями выполнена в Writer более удачно, нежели в Word, поскольку лучше организована и проще для восприятия. В связи с этим дальнейшее изложение материала будет касаться в первую очередь именно Writer, хотя описание аналогичных функций, имеющихся в Word, также будет по возможности приводиться. Упор на Writer будет сделан ещё и по следующим причинам.
Публикации (как печатные, так и электронные), посвящённые способностям текстовых редакторов, которые будут описываться ниже, относительно редки, так что восполнить этот пробел настоящей заметкой будет совсем не лишним. Собственный формат текстовых файлов Writer ODT фактически является ГОСТовским форматом хранения данных, так как стандарту ISO/IEC 26300 (который этот формат и описывает) полностью соответствует ГОСТ Р 26300-2010. Кроме того, распоряжением Правительства Российской Федерации от 17.12.2010 г. № 2299-р утверждён «План перехода федеральных органов исполнительной власти и федеральных бюджетных учреждений на использование свободного программного обеспечения на 2011-2015 годы». Из сказанного следует, что для государственных учреждений использование LibreOffice Writer становится вполне актуальным, в связи с чем ряд примеров применения полей будет касаться оформления документов, относящихся к судебной экспертизе и думается, что предлагаемые советы смогут оказаться полезными также для сотрудников самых разных ведомств и организаций.
Содержание:
Общие сведения о полях
Поле пользователя
Поля «Дата» и «Время»
Поле «Список»
Поле «Текст с условием»
Поля «Предыдущая страница» и «Формула»
Скрытие разделов в Writer
Ещё раз о совместимости
Бонус: некоторые дополнительные рекомендации
Общие сведения о полях
Поле можно рассматривать как мини-программу, состоящую из одной команды и её специальных параметров, результат выполнения которой отображается в виде некого текста. Одним из самых простых типов полей является поле «Номер страницы», которое, как это и следует из его названия, ответственно за отображение нумерации страниц в документе. Так как в текстовых редакторах предусмотрено довольно много различных типов полей, то далее будет рассказано только про некоторые.
В Writer работа с полями осуществляется прежде всего при помощи диалогового окна «Поля», которое вызывается через пункт меню «Вставка» → «Поля» → «Дополнительно…»:
Поля, размещённые в документе Writer, имеют серое затенение, видимое однако только в режиме правки документа. В остальных случаях (при выводе на печать; если открытый файл имеет атрибут «только чтение» или же если правка выключена отжатием кнопки «Редактировать документ» на панели инструментов «Стандартная») затенение полей отсутствует. При желании его можно отключить – для этого служит соответствующий пункт меню «Вставка». Можно также включить режим показа имён полей при помощи пункта меню «Вид» → «Поля». В этом случае номер страницы, вставленный в нижний колонтитул будет выглядеть следующим образом:
В Word также имеется диалоговое окно для управления полями – оно вызывается выбором пункта меню «Поле…», которое раскрывается при нажатии кнопки «Экспресс-блоки» в секции «Текст» вкладки ленты «Вставка». Следует отметить, что в Word поля приобретают затенение только когда в них оказывается установлен текстовый курсор. Аналогично режиму отображения имён полей в Writer в Word есть способ показать их «истинную сущность», для чего нужно щёлкнуть правой кнопкой мыши по полю и появившемся контекстном меню выбрать пункт «Коды/значения полей». Например, номер страницы в таком режиме выглядит так:
{ PAGE \* MERGEFORMAT }
Поле пользователя
Довольно часто при оформлении документов необходимо одни и те же данные приводить в разных их частях, что неизбежно создаёт некоторые трудности, поскольку для правильного составления документа требуется такие данные проверять и редактировать в каждом конкретном случае. К подобной повторяющейся информации может относиться регистрационный номер документа и дата его составления, так как бывает в соответствии с принятыми в какой-либо организации правилами делопроизводства указанные сведения нужно приводить как в заголовочной части документа, так и, например, в колонтитулах. Именно в таких случаях может пригодиться «Поле пользователя». Для его вставки в диалоговом окне «Поля» нужно переключиться на вкладку «Переменные», где в списке «Тип» выбрать «Поле пользователя»:
После этого в нижней части окна следует указать имя и значение создаваемого поля. В имени поля допускается использование букв (в том числе и русского алфавита) и цифр, вместо пробела можно использовать знак «_» («подчёркивание») – в целом это напоминает правила составления имён переменных при написании программ. В качестве значения поля как раз и следует указывать собственно повторяющийся текст, также нелишним будет уточнить формат данных («Текст» вместо “Standard”).
Разноимённых полей рассматриваемого типа в документе можно создавать произвольное число. Каждый экземпляр какого-либо поля пользователя, размещённый в документе, отображает одну и ту же информацию. Для изменения значения поля нужно дважды щёлкнуть по нему и откроется диалоговое окно для выполнения соответствующего редактирования.
Таким образом если упоминавшиеся выше регистрационный номер документа и дата его составления оформлены как поля пользователя, то при изменении значения одного поля эта информация автоматически обновляется во всех его экземплярах и в результате отпадает необходимость одни и те же сведения указывать по нескольку раз.
Для аналогичных целей в Word можно использовать экспресс-блоки «Свойство документа», (секция «Текст» на вкладке ленты «Вставка»):
При выборе одного из них в текст документа вставляется вот такая штука в виде голубой рамки с «язычком»-закладкой на верхней стороне слева:
В эту рамку можно поставить курсор и набрать какой-либо текст. Возможно, что сразу после вставки в таком экспресс-блоке уже будет присутствовать некое содержимое – его можно легко заменить. При необходимости сам блок целиком выделяется щелчком по «язычку»-закладке. Как и в Writer экземпляры каждого из 15 возможных экспресс-блоков отображают одно и тоже, автоматически обновляясь при изменении содержимого в каком-нибудь из них. Отдельного упоминания заслуживает экспресс-блок «Дата публикации» – если введённую в него информацию программа опознаёт именно как дату, то преобразует её написание в соответствии с текущими настройками операционной системы – так запись «12 июня 2014 г.» может сама поменяться на «12.06.2014».
Поля «Дата» и «Время»
Эти поля, как нетрудно догадаться, служат для добавления в документ текущих календарной даты и времени, которые берутся из системных настроек компьютера. Чтобы их вставить, нужно в окне «Поля» переключиться на вкладку «Документ»:
Для каждого из рассматриваемых типов полей существует по две разновидности. Первая – фиксированная, когда при вставке в документ берётся текущее значение и в дальнейшем не меняется. Вторая разновидность более интересна, поскольку способна обновляться.
Если вы воспользуетесь пунктом программного меню «Сервис» → «Параметры…», то откроется диалоговое окно. В левой его части нужно раскрыть ветку “LibreOffice Writer”, в которой выбрать пункт «Общие»:
В разделе «Автоматически» обычно стоит флажок «Поля», благодаря чему значения полей при открытии документа и перед выводом его на печать сами обновляются. Работает это следующим образом. Допустим, имеется документ, в котором должна быть указана дата его составления – таковыми являются, например, служебные записки, рапорта и т. п. Если вставить в документ в нужном месте поле «Дата», то при открытии его файла она будет менять своё значение в зависимости от дня календаря и вручную его править уже не потребуется.
Значения полей можно обновлять и принудительно – через пункт меню «Сервис» → «Обновить» → «Поля» или нажатием клавиши [F9].
Для полей «Дата» и «Время» можно задавать разные способы отображения в списке «Формат» – просто выберите нужный вариант представления этих данных непосредственно перед вставкой. Если же и предлагаемых вариантов окажется мало, то выберите в списке пункт «Дополнительные форматы…»:
В случае поля «Дата» при этом откроется ещё одно диалоговое окно следующего вида:
Если в нём выбрать указанный на рисунке вариант «31 Декабрь, 2014», а затем в строке «Код формата» убрать из шаблона представления даты символ «D», оставив вот это:
MMMM, YYYY
то в области образца отобразится «Декабрь, 2014» (представление даты в виде наименования месяца и номера года). В качестве примера использования описанного способа использования поля «Дата» можно привести такой документ:
В среде Word вставка аналогичных полей делается следующим образом. Нужно вызвать диалоговое окно «Поле», в котором в списке «Поля» в левой части окна выбрать, например, “Date” («Дата»). Для облегчения поиска можно предварительно в выпадающем списке «Категория» указать «Дата и время»:
При выборе указанного на рисунке формата даты «ноябрь 14» в строчке на списком отобразится шаблон представления даты. Если если его изменить на
MMMM, yyyy
то после вставки поле будет отображать наименование месяца и год, написанные через запятую.
Поля в документе Word автоматически обновляются при открытии файла и выводе его на печать. При необходимости принудительно обновить все поля в текущем открытом документе, нужно всё его содержимое выделить (комбинация [Ctrl]+[A] или команда «Выделить все» в меню кнопки «Выделить», расположенной в секции «Редактирование» вкладки ленты «Главная»), после чего нажать [F9].
Поле «Список»
Бывает, что при составлении документов встречаются ситуации, когда в одном месте документа нужно привести один из вариантов некой фразы. Например, при составлении заключения эксперта необходимо указывать экспертную специальность, в рамках которой данная экспертиза выполнена. Зачастую сотрудники судебно-экспертных учреждений имеют право самостоятельного производства экспертиз по нескольким специальностям. Именно в таких случаях и можно использовать поле «Список»:
Текст элементов создаваемого списка вводится в соответствующем месте в верхней правой части окна, окончание ввода подтверждается нажатием кнопки «Добавить».
Поле «Список» в тексте документа показывает только один из своих элементов. Для изменения отображаемого элемента нужно щёлкнуть по нему и появится небольшое окно «Выбор элемента», в котором нужно выбрать нужное и нажать кнопку «ОК»:
Нетрудно видеть, что в этом случае замена одной довольно длинной фразы на другую сводится всего лишь к трём щелчкам кнопкой мыши.
Поле рассматриваемого типа может применяться во многих ситуациях – например для указания данных об исполнителе какого-либо документа, где можно заранее задать фамилии и инициалы сотрудников.
В Word поля «Список» как такового нет, но можно сделать в документе его аналог. Прежде всего нужно включить отображение вкладки «Разработчик», для чего нужно нажать кнопку «Офис» , а в открывшемся меню – кнопку «Параметры Word». При этом откроется диалоговое окно, в котором в разделе «Основные» надо установить флажок «Показывать вкладку «Разработчик» на ленте» (в Word 2010 / 2013 нужно раскрыть вкладку «Файл», выбрать «Параметры», в открывшемся диалоговом окне переключиться в раздел «Настройки ленты», а затем в правой части окна в списке вкладок установить флажок «Разработчик»). На появившейся вкладке в секции «Элементы управления» нажмите кнопку «Раскрывающийся список»:
При этом в документ вставится вот это:
Далее нужно будет нажать ставшей доступной кнопку «Свойства»
и откроется окно следующего вида:
Создание элементов в списке осуществляется нажатием кнопки «Добавить…», открывающей маленькое окно, в котором нужно ввести значение элемента списка:
В готовом виде список никак не выделяется, но если в него поставить текстовый курсор, то вокруг него появится рамка, в правой части которой будет кнопка с направленным вниз треугольничком, позволяющая раскрыть список элементов и изменить его текущее отображаемое значение:
Поле «Текст с условием»
Поле этого типа может отображать либо один, либо другой текст в зависимости от того, выполняется ли некое заданное условие:
Рассмотрим использование такого поля на следующем конкретном примере. Перед производством судебной экспертизы эксперт предупреждается об ответственности за дачу заведомо ложного заключения. В случае экспертиз по уголовным, гражданским и арбитражным делам эта ответственность предусмотрена ст. 307 Уголовного Кодекса России (УК РФ), а при производстве экспертиз по административным делам – ст. 17.9 Кодекса Российской Федерации об административных правонарушениях (КоАП РФ). Допустим, в документе имеется поле пользователя «Вид_дела» (используется, например, в заголовке документа «Заключение эксперта по {уголовному делу}»). Если при создании поля «Текст с условием» задать в нём следующее условие (оператор «равно» в условия задаётся как == или EQ, а «не равно» – как != или NEQ):
Вид_дела == «административному материалу проверки КУСП»
и указать в качестве параметра «Если выполняется»
«17.9 КоАП»
(текст обязательно надо заключать в прямые кавычки), а параметр «Иначе» задать равным
«307 УК»
то в зависимости от того, какое значение полю «Вид_дела» присвоено, будет отображаться соответствующий вариант. Так, если экспертиза проводится в рамках уголовного дела и полю «Вид_дела» присвоено соответствующее значение «уголовному делу» (то есть, если указанное выше условие не выполняется), то результат будет выглядеть так:
Один из параметров – «Если выполняется» или «Иначе» – при создании поля «Текст с условием» можно оставлять пустым и это можно использовать так. Законодательством предусмотрены права и обязанности эксперта, оговорённые в ст. 57 Уголовно-процессуального кодекса (УПК), ст. 85 Гражданского процессуального кодекса (ГПК), ст. 55 Арбитражного процессуального кодекса (АПК) или ст.ст. 25.9 и 26.4 КоАП. Если в документ вставить друг за другом четыре поля рассматриваемого типа с условиями
Вид_дела == «уголовному делу»
Вид_дела == «гражданскому делу»
Вид_дела == «арбитражному делу»
Вид_дела == «административному материалу проверки КУСП»
а в качестве параметра «Если выполняется» указать у них соответственно
«57 УПК»
«85 ГПК»
«55 АПК»
«ст. 25.9 и 26.4 КоАП»
и оставить значения параметров «Иначе» пустыми, то в зависимости от указанного вида дела при составлении заключения эксперта (редактировании документа) ссылки на нужные статьи будут подставляться в текст автоматически. Например, в случае экспертизы по гражданскому делу это будет выглядеть так:
а при экспертизе по административному делу – так:
В Word также есть поле с условием – “If”, рассмотрим его работу на примере статьи об ответственности эксперта. Пусть у нас экспресс-блок «Автор» содержит информацию о виде дела:
В строку «Об ответственности за дачу заведомо ложного заключения по ст. эксперт 09.11.2015 г. предупреждён» между «по ст. » и « эксперт» поставьте курсор и откройте диалоговое окно для вставки поля:
В строке с дополнительными свойствами поля введите следующее:
IF x = «административному материалу проверки КУСП» «17.9 КоАП» «307 УК»
После нажатия кнопки «ОК» получится во это:
Далее по полю нужно будет щёлкнуть правой кнопкой мыши и в появившемся контекстном меню выбрать пункт «Коды/значения полей»:
В таком режиме отображения поле можно посимвольно редактировать: удалите «x» и вставьте вместо него поле “DocProperty” со свойством “Author” (можно также просто вставить собственно поле “Author”):
Таким образом в одно поле окажется вложено другое. Теперь обновите поле “If”. Должно получиться вот это:
То есть, аналогично вышеприведённому примеру с полем «Текст с условием» в Writer, если экспертиза проводится в рамках дела об административном правонарушении и в экспресс-блоке «Автор» это указано, то поле “If” будет отображать (после обновления) статью 17.9 КоАП, а во всех остальных случаях – статью 307 УК. Как видно, оператор «равно» в условии задаётся соответствующим символом «=», условие «не равно» записывается как «» (знаки «больше» и «меньше»).
Ниже для справки приводится небольшая таблица с названиями некоторых экспресс-блоков «Свойства документа» и соответствующих им свойств поля “DocProperty”:
Название экспресс-блока «Свойство документа» |
Свойство поля “DocProperty” |
---|---|
Автор |
Author |
Категория |
Category |
Ключевые слова |
Keywords |
Название |
Title |
Организация |
Company |
Примечания |
Comments |
Руководитель |
Manager |
Тема |
Subject |
Поля «Предыдущая страница» и «Формула»
Весьма типичной ситуацией является составление сопроводительного письма, с которым отправляется основной документ и не менее типичной ситуацией является, когда в таком письме необходимо приводить данные, которые в основном документе встречаются по нескольку раз (например всё те же упоминавшиеся выше регистрационный номер и дата составления документа). Если основной документ может иметь ещё и различное количество страниц, а указание таких данных в письме также является обязательным, то лучше это автоматизировать.
Прежде всего, необходимо добавить в документ заготовку для сопроводительного письма и разместить её в самом конце. Довольно часто при составлении документов на его страницах проставляются их номера, причём на самой первой странице номер не ставится. В Writer такого можно добиться, если самую первую страницу документа сделать титульной – присвоить ей стиль «Первая страница» (см. часть I, «Параметры страницы и вставка титульных страниц») и в колонтитулах остальных страниц (которые будут иметь стиль страницы «Базовый») проставить их номера вставкой соответствующего поля. Из этого следует, что заготовка сопроводительного письма также должна быть сделана титульной страницей. Далее возможны два варианта. Рассмотрим сначала первый, когда основной документ печатается с одной стороны листа. В Writer предусмотрено поле «Предыдущая страница»:
Если такое поле вставить в заготовку сопроводительного письма, размещённую в конце основного документа в качестве дополнительной страницы, то она будет показывать число, равное числу страниц в основном документе. Иными словами, можно организовать так, чтобы в сопроводительное письмо к документу сами собой будут подставляться номер этого документа, дата его составления и число листов в нём:
Теперь рассмотрим другую ситуацию: основной документ печатается с обеих сторон листа. В этом случае пригодится другое поле – «Формула»:
Это поле может содержать математическое выражение, результат вычисления по которому отображается в тексте документа. Вводится это выражение в соответствующий раздел диалогового окна. В случае подсчёта числа листов в документе при двусторонней печати текст формулы таков:
(PAGE-1)/2 ROUND 0
В Writer есть ряд встроенных переменных, к значениям которых можно обращаться. В приведённой формуле это переменная PAGE, которая содержит в себе число страниц в редактируемом документе. Из этой переменной вычитается единица (тем самым учитывается «лишняя» страница на сопроводительное письмо) и делится на два. Полученный результат при помощи функции ROUND округляется до ближайшего целого числа – число «0» после обозначения функции как раз и означает количество знаков после запятой. Список других функций, которые можно использовать, и их синтаксис (правила написания) можно посмотреть в справке по LibreOffice (клавиша [F1]). Как нетрудно догадаться, поле «Формула» можно использовать вместо «Предыдущей страницы», указав следующее выражение:
PAGE-1
Важно упомянуть также один нюанс. Обратите внимание: на приведённом выше рисунке с образцом сопроводительного письма его текст размещён внутри ячейки таблицы (для чего это нужно, будет рассказано далее). Дело в том, что в Writer формула может быть присвоена самой ячейке таблицы – этот текстовый редактор поддерживает простые вычисления, подобно табличным процессорам Calc, Excel и т. д. В связи с этим вышеприведённое поле «Формула» нужно разместить сначала в документе за пределами таблицы, а после этого скопировать в буфер обмена и вставить в нужное место письма – в строчку с первым пунктом в списке приложений.
При использовании Word действовать нужно несколько иначе. Пустую страницу для заготовки сопроводительного письма лучше вставлять в виде нового раздела – для этого достаточно добавить в конце основного документа символ «Разрыв раздела». Так как документ Word по умолчанию состоит из одного раздела, то при вставке разрыва добавляется ещё один раздел, который сначала «наследует» свойства предыдущего. Если при этом документ имел особый колонтитул для первой страницы, на котором не проставлен её номер, то, разумеется, первая страница нового раздела также будет без номера. Разберём сначала случай простановки в сопроводительном письме числа страниц при печати основного документа с одной стороны листа.
Нужно вызвать диалоговое окно «Поле» и выбрав «= (Formula)»
нажать кнопку «Формула…», при этом появится ещё одно окно, в котором нужно ввести текст как это показано на рисунке:
После нажатия «ОК» вставится поле, отображающее число «8». Далее нужно будет вызвать его контекстное меню и отобразить коды (значения) полей:
Удалите число «9» – вместо него нужно будет вставить номер страницы. Делается это ещё одним вызовом окна «Поле» и вставкой поля «NumPages». После этого останется только поле формулы обновить.
В случае печати основного документа с двух сторон листа формула должна быть такой:
=Round((9-1)/2; 0)
Функция Round выполняет округление и содержит два аргумента: первый – собственно округляемое число, а второй – число знаков после запятой, до которых нужно округлять («0» означает округление до целого). Внимание! Аргументы функции должны быть отделены друг от друга разделителем элементов списка, определённым в региональных параметрах в панели управления Windows – запятой или, как в приведённом случае, точкой с запятой. Далее нужно будет вместо «9» вставить поле «NumPages» и выполнить обновление поля «= (Formula)».
Скрытие разделов в Writer
Бывают ситуации, когда при оформлении документа в зависимости от каких-либо условий необходимо показать или скрыть довольно значительный кусок текста. В судебно-экспертных учреждениях могут проводится исследования в досудебном порядке и результат их оформляется не как заключение эксперта, а в виде акта экспертного исследования. Одним из главных отличий двух этих документов является отсутствие во втором из них подписки эксперта. Допустим, название документа оформлено в виде поля пользователя «Тип_документа» по причине потребности указания его не только в заголовке документа, но и в сопроводительном письме. Если текст подписки разместить внутри раздела, в параметрах которого в разделе «Скрыть»
задать вот такое условие:
Тип_документа ==»Акт экспертного исследования»
то при составлении заключения эксперта такой раздел будет показываться:
При изменении заголовка документа на «Акт экспертного исследования», подписка «схлопнется» и в самом документе отображаться уже не будет (разумеется, до тех пор, пока значение поля «Тип_документа» не будет изменено на что-то другое):
Ещё раз о совместимости
При необходимости пересохранить файл документа Writer в формате редактора Word следует быть особенно внимательным, если он содержит поля. Вот что происходит с ними при конвертировании в форматы DOC и DOCX:
Поле в ODT |
DOC |
DOCX |
---|---|---|
Поле пользователя |
Заменяется на обычный текст |
Заменяется на текст вида «Поле пользователя {Имя поля} = {Значение поля}» |
Текст с условием |
Заменяется на выражение вида «{текст, если условие выполняется}»|»{текст, если условие не выполняется}» |
Удаляется из документа |
Дата (Время) |
Заменяется на поле Date (Time) |
Заменяется на поле Date (Time) |
Предыдущая страница |
Заменяется на поле Page |
Заменяется на поле Page |
Формула |
Заменяется на обычный текст |
Заменяется на текст вида «Вставить формулу {текст формулы}» |
Список |
Заменяется на элемент управления «Поле со списком» |
Заменяется на устаревший (для данного формата) элемент управления «Поле со списком» |
Раздел при сохранении ODT-файла в формате DOC или DOCX превращается в текст, отделённый непечатаемыми знаками «Разрыв раздела (на текущей странице)», а в конце текста титульной страницы ставится знак «Разрыв раздела (со следующей страницы)».
Таким образом перед конвертированием документа в другой формат лучше предварительно превратить некоторые поля в обычный текст: выделить, скопировать в буфер обмена ([Ctrl]+[C]) и тут же выполнить специальную вставку ([Ctrl]+[Shift]+[V] или [Ctrl]+[Shift]+[Alt]+[V]).
Если же понадобится преобразовать DOCX-файл в ODT, то с рассмотренными выше объектами произойдёт следующее:
Объект в DOCX |
После конвертации в документ Writer |
---|---|
Экспресс-блок «Свойство документа» |
Заменяется на обычный текст |
Поля Date и Time |
Заменяются на поля «Дата» и «Время» |
Элемент управления «Раскрывающийся список» |
Заменяется на элемент управления «Поле со списком» |
Поле «= (Formula)» |
Заменяется на обычный текст. Если при этом в формулу было вложено какое-нибудь поле, то рядом вставляется ещё и наиболее близкий его аналог (например, поле «NumPages» заменяется полем «Страницы») |
Бонус: некоторые дополнительные рекомендации
В заключение хотелось бы дать ещё несколько советов, относящихся к оформлению документов.
Вёрстка при помощи таблиц
В отличие от бумажных книг, таблицы – это не только средство для сжатого и лаконичного представления порой достаточно большого количества данных, но и эффективный, а зачастую – незаменимый инструмент для вёрстки, в частности для размещения на странице в определённом порядке разнородного материала и установки его в нужной позиции.
Так, в заголовке документа на одной строке могут указываться его регистрационный номер и дата составления. Очень рекомендую эту часть оформить в виде таблицы из одной строки, состоящую из двух ячеек и имеющую непечатаемые границы. В левой ячейке можно оставить выравнивание текста по левому краю (оно и так по умолчанию будет таким), а в правой – установить выравнивание по правому краю. Выглядит в итоге это дело примерно так:
Поскольку названия месяцев имеют разную длину, то при использовании указанной выше таблицы приведённые в ней сведения всегда ровнёхонько стоят по краям страницы и никуда не «уползают» при вводе.
При оформлении сопроводительного письма можно закрепить имя и контактный телефон исполнителя внизу страницы. Для этого достаточно собственно текст письма разместить внутри таблицы из одной ячейки, а её нижний край оттянуть книзу, чтобы сразу за такой таблицей указать данные исполнителя. Дело в том, что перечень приложений в сопроводительном письме может содержать довольно много пунктов, которые при предлагаемом к использованию подходе не вызовут «перескока» сведений об исполнителе на другую страницу:
Специальные эффекты шрифта и абзаца
Особыми шрифтовыми эффектами почему-то мало кто пользуется, хотя они бывают порой весьма полезными.
Для текста можно задать написание прописными буквами, при этом редактор помнит, что буквы, к которым применён такой эффект, набраны именно строчными. В среде Word это делается в диалоговом окне «Шрифт» (вызывается одноимённым пунктом в контекстном меню, появляющемся при правом щелчке по тексту), где на вкладке «Шрифт» нужно установить флажок «Все прописные». В Writer для этой же цели нужно открыть диалоговое окно «Символ» (вызывается аналогично – выбором соответствующего пункта контекстного меню), где на вкладке «Эффекты шрифта» выбрать в выпадающем списке «Эффекты» пункт «Прописные буквы»:
Второй эффект – это отображение текста набранным вразрядку. Намного удобнее делать это не натыкиванием пробелов между буквами слов, а воспользоваться диалоговым окном «Символ» (в Writer; вкладка «Положение», значение «Разреженный» у выпадающего списка «Интервал») или «Шрифт» (в Word; вкладка «Интервал»):
Название типа документа может указываться в его заголовке и приводиться также в сопроводительном письме. Часто встречается набор заголовка документа прописными буквами. Если же в заголовок и в сопроводительное письмо вставить экспресс-блок «Свойство документа» (в Word) или поле пользователя (в Writer), то при использовании указанных эффектов шрифта название документа в сопроводительном письме будет отображаться обычным шрифтом, а в заголовке – прописными буквами с разрядкой.
Ещё один эффект относится к свойствам абзаца. В диалоговом окне «Абзац» (вызывается из контекстного меню) на вкладке «Положение на странице» есть параметр «не отрывать от следующего» (в Word) или «Не отрывать от следующего абзаца» (в Writer) – его я рекомендую устанавливать для заголовков, поскольку при этом идущий за ним текстовый абзац не даст этим заголовкам, в случае чего, остаться одиноко торчать в конце страницы, а «утянет» его в начало следующей.
Автозамена
Очень полезная сервисная функция текстового редактора, которая позволяет упростить набор длинных фраз.
В Word установка параметров автозамены выполняется так: кнопка «Офис» → кнопка «Параметры Word» → Раздел «Правописание» → кнопка «Параметры автозамены…» (в версии Word 2010 / 2013 – вкладка «Файл» → пункт «Параметры» → Раздел «Правописание» → кнопка «Параметры автозамены…»).
В появившемся диалоговом окне на вкладке «Автозамена» в поле «заменить:» пишется условная комбинация символов (в приведённом ниже примере – «грз»), а в поле «на:» – текст, на который она должна заменяться («государственный регистрационный знак»), далее нажимается кнопка «Добавить» и всё – теперь текстовый редактор при вводе указанных трёх букв (и последующего нажатия на пробел, чтобы дать понять программе, что ввод слова закончен) будет производить данную автозамену.
В Writer похожее окно вызывается через меню «Сервис» → «Параметры автозамены…» – действия в нём выполняются аналогично:
Добавлено: 16.11.2014
Изменено: 10.11.2015
Скачать в pdf
shurichimik.narod.ru
Ответы@Mail.Ru: MS Word, поля
Инженер_ОНАС Профи (765), закрыт 9 лет назадДополнен 9 лет назад
Возвращает ли значение используемое для создания форм поле FORMCHECKBOX и если да, то как его получить. Мне нужно чтобы остальные поля реагировали на его изменение, т.е. приблизительно так:
{if имя_чекбокса = 1 <выражение1> <выражение2>}. Но такой вариант не проходит, т.к. закладке никакого значения не присваивается. И сделать это нужно не прибегая к использованию Visual Basic.
Карамышев Павел Просветленный (46482) Цитата из MS Word 2003 SP2 Help Поля для использования в формах { FORMCHECKBOX } { FORMDROPDOWN } { FORMTEXT } Эти поля вставляют в форму флажок, поле со списком или текстовое поле соответственно. Вставлять или изменять эти поля напрямую невозможно. Для их вставки следует использовать кнопки Флажок , Текстовое поле и Поле со списком на панели инструментов (Панель инструментов. Строка с кнопками и другими элементами управления, служащими для выполнения команд. Чтобы вызвать панель инструментов, в меню Сервис выберите команду Настройка, а затем выберите вкладку Панели инструментов.) ) Формы. Изменить эти поля можно с помощью кнопки Параметры поля формы на панели инструментов Формы.
Комментарий удаленКарамышев Павел Просветленный (46482) Из той же автономной справки: Примеры полей IF Поле IF выполняет одну из двух операций в зависимости от указанных условий. Например, утверждение «Если погода будет хорошей, мы прогуляемся по парку, а если нет — пойдем в кино» определяет условие, (хорошая погода), при котором произойдет определенное событие (прогулка по парку). Если это условие не соблюдено, происходит альтернативное событие (поход в кино). Приведенное ниже поле IF представляет собой утверждение того же типа. Если текущая запись данных содержит значение «Саратов» в поле «Город», в документ, полученный в результате слияния с этой записью данных, будет включен текст, содержащийся в первых кавычках. В противном случае будет добавлен второй текст. Следующий пример использует поля IF и MERGEFIELD. { IF { MERGEFIELD Город } = «Саратов» «Пожалуйста, позвоните в местное отделение нашей фирмы.» «Пожалуйста, отправьте заполненный формуляр в приложенном конверте.» }
Комментарий удаленКарамышев Павел Просветленный (46482) 1 поле чекбокс (свойства-закладка Флажок1) 2 поле Вставляем через меню if !Флажок1 «установлен» «неустановлен» включаем защиту на панели форм. тыкаем на чекбоксе. правой кнопкой на 2м поле обновить. Значение поле меняется в зависимости от чекбокса Как сделать обновления автоматом-не знаю.
Комментарий удален
Комментарий удален
Остальные ответы
Queenmara Просветленный (21730) 9 лет назад Ты сам себе противоречишь. О каком «if …» может идти речь, если не прибегать к Visual Basic«if…then…else» -оператор языка программирования. Просто так в значение поля ты его не введешь Комментарий удален
Queenmara Просветленный (21730) If-это не поле,а оператор.Синтаксис следующий:If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If -or- If condition Then [ statements ] [ Else [ elsestatements ] ], где condition-Обязательный параметр. Выражение. Должен принимать значение True или False или должен быть типом данных, который можно преобразовть в Boolean. Then-В однострочный форме является обязательным параметром, а в многострочной — необязательным. statements-Необязательно. Один или несколько операторов следующих за If…Then, которые выполняются, если результатом вычисления condition является True. elseifcondition-Требуется, если имеется ElseIf. Выражение. Должен принимать значение True или False или должен быть типом данных, который можно преобразовть в Boolean . elseifstatements-Необязательно. Один или несколько операторов следующих за ElseIf…Then, которые выполняются, если результатом вычисления
Комментарий удален
Комментарий удаленУ вас все правильно, только вы не присвоили значение вашей закладке. Наберите нужное вам значение для нее в тексте, потом выделите и нажмите на кнопку Закладка
Похожие вопросы
Также спрашивают
otvet.mail.ru
vba — Как вставить поле mergefield в оператор If..else в VBA с помощью Word MailMerge?
Насколько мне известно, единственный способ вставить вложенный набор полей — это вставить поля напрямую. Вложенные поля сложны — в Интернете есть несколько подходов «там». Ниже я использую следующее.
В этом варианте самое внешнее поле вставляется с текстом-заполнителем для внутреннего кода (ов) внутреннего поля. Текст-заполнитель — это код поля с типизированными скобками (а не с видом Ctrl + F9).
Внешнее поле отправляется в функцию GenerateNestedField
вместе с строкой-заполнителем. Функция находит местозаполнитель в полевом коде и вставляет реальное поле на свое место.
Мне пришлось изменить свой стандартный код, чтобы работать с тем фактом, что вы вставляете MailMergeField для поля If. Необходимо преобразовать MailMergeField в обычный Word.Field, который я делаю, выбирая вставленное поле, а затем беря первое поле в коллекции Fields.
Sub IfPlusMergeField()
Dim doc As word.Document
Dim sFieldCode As String, sFieldName As String
Dim fldMerge As word.MailMergeField
Dim fldIf As word.Field
Set doc = ActiveDocument
sFieldName = dt.FieldName
sFieldCode = "{Mergefield " & sFieldName & "}"
Set fldMerge = doc.MailMerge.Fields.AddIf(Range:=Selection.Range, _
MERGEFIELD:=sFieldName, Comparison:=wdMergeIfGreaterThan, _
CompareTo:="30", TrueText:=sFieldCode, _
FalseText:="0")
fldMerge.Select
Set fldIf = Selection.Fields(1)
Debug.Print GenerateNestedField(fldIf, sFieldCode)
End Sub
'Returns the changed field code
Function GenerateNestedField(fldOuter As word.Field, _
sPlaceholder As String) As String
Dim rngFld As word.Range, doc As word.Document
Dim bFound As Boolean
Dim sFieldCode As String
Set doc = fldOuter.Parent
Set rngFld = fldOuter.code
rngFld.TextRetrievalMode.IncludeFieldCodes = True
bFound = rngFld.Find.Execute(findText:=sPlaceholder)
'Get the field code from the placeholder by removing the { }
sFieldCode = Mid(sPlaceholder, 2, Len(sPlaceholder) - 2)
If bFound Then
doc.Fields.Add rngFld, word.WdFieldType.wdFieldEmpty, sFieldCode, False
End If
'Debug.Print fldOuter.code
GenerateNestedField = fldOuter.code
End Function
qaru.site