Статьи из блога
Использование макроса для вывода части текста поля
Игорь спрашивает:
У меня есть некий шаблон договора. В нем, среди прочего, есть поле ввода ФАМИЛИИ ИМЕНИ И ОТЧЕСТВА. Мне нужно, чтобы после ввода полного ФИО, в конце договора отображалась только ФАМИЛИЯ и ИНИЦИАЛЫ. Решаемо ли это?
Игорь, да это возможно.
Вам следует открыть ваш шаблон договора для редактирования, затем открыть редактор Visual Basic («Alt+F11») и вставить в модуль шаблона вот этот макрос:
Sub FIO() Dim bm As Bookmark Dim sText As String Dim sArray() As String Dim sResult1 As String Dim sResult2 As String Set bm = ActiveDocument.Bookmarks("bm") sText = bm.Range.Text sArray = Split(sText) sResult1 = sArray(0) & " " sResult1 = sResult1 & Left(sArray(1), 1) & ". " sResult1 = sResult1 & Left(sArray(2), 1) & "." sResult2 = sArray(2) & " " sResult2 = sResult2 & sArray(1) ActiveDocument.Bookmarks("fio").Select Selection.TypeText sResult1 End Sub
Далее, перейдите в текст шаблона договора и выделите текстовое поле и в свойствах его (щелчок правой кнопкой и выбор команды "Свойства") установите флажок на параметрах "Разрешить изменения" и "Вычислить при выходе", а в поле "Закладка" введите имя закладки для этого поля - bm. В поле "При выходе" выберите ваш макрос "FIO" и закройте диалог.
Далее, определитесь - в каком месте шаблона у вас должно выводиться Фамилия с инициалами. В этом месте добавьте закладку (под именем "fio"). Затем установите защиту на шаблон и сохраните изменения.
Создайте документ на основе вашего шаблона, введите ФИО в поле и нажмите клавишу «TAB» (выход из поля). В том месте, где вы установили закладку, появится фамилия с инициалами.
Метки: закладки | макросы | поля | шаблоны
Просмотров: 28837
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 250 бесплатных шаблонов для MS Office
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Word 97. Слияние документов как один из способов упростить свою работу
- Абзац с цветным фоном
- Автозаполняемые колонтитулы
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Автоформат документов
- Белый текст на синем фоне в Word 2007
- Буквица
- Быстрая смена ориентации страниц документа
- Быстрое изменение стиля форматирования текста
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрое удаление границ у таблицы
Комментариев: 40
Добрый день!
Очень заинтересовал Ваш макрос, но он у меня выдает следующую ошибку:
Run-time error 5941:
Запрашиваемый номер семейства не существует.
Помогите разобраться.
Александр, возможно у вас нет нужной закладки.
Александр, я поправил ваш шаблон и выслал вам. Если вопросы остались, спрашивайте.
Здравствуйте. Подскажите пожалуйста, как зафиксировать таблицу (обычную) в конце каждой страницы, чтобы при вводе текста, она не двигалась вниз с нажатием кнопки enter. Спасибо.
Аля, вам нужно использовать колонтитулы, вероятно. Почитайте здесь на сайте о колонтитулах (введите в поле поиска "колонтитул").
Доброго времени суток, а можно ли сделать так, чтобы после ввода ФИО в поле, ФИО отоброжалось в указанных закладками местах, далее по тексту.
т.е. используя одну и туже закладку вставлять ФИО в договоре по тексту
Можно. Вот здесь описано.
/// Далее, перейдите в текст шаблона договора и выделите текстовое поле и в свойствах его (щелчок правой кнопкой и выбор команды "Свойства") установите флажок на параметрах "Разрешить изменения" и "Вычислить при выходе", а в поле "Закладка" введите имя закладки для этого поля - bm. /// Текстовое поле - не могу понять как его создать и где его свойства.
И как сделать, чтобы вводимые значения (в закладках) при вводе были затененные?
Виктор, это поле вставляется из панели инструментов "Формы". На этой же панели и кнопка "Свойства". Почитайте вот эту заметку: http://wordexpert.ru/page/panel-instrumentov-formyi
Антон, прошу, подскажите, а для нового текстового поля Word 2007 можно как-то назначить закладку наподобие того, что описано выше? Свойства этого поля вызываются только из вкладки "Разработчик" и не содержат никаких идентификаторов, кроме тега и имени (XML, надо понимать). Т.е. не работает код поля REF. Возможно есть какой-то другой вариант? Мне в общем-то нужно продублировать в нескольких местах содержимое определенного поля.
Спасибо.
Денис, вот заметка на эту тему: http://wordexpert.ru/page/vvod-povtoryayushhixsya-fragmentov-teksta-v-word-2007
Антон, мне нужно, чтобы такая закладка была в колонтитулах. После нажатия TAB, WORD выдаёт ошибку и закрывается.
Причём в колонтитулах нужно чтобы в одном месте вставлялись полностью фамилия, имя и отчество, а чуть ниже, там где в скобках обычно расшифровка подписи, только фамилия и инициалы. Помогите пожалуйста. Могу дать свой файл, только не знаю как:(
Елена, отправьте ваш документ сюда (http://zalil.ru/) и потом сообщите ссылку на файл.
Спасибо за оперативность!
http://slil.ru/28437835
Елена, я разобрался в чем причина: в макросе и способе вставки текста закладки в колонтитулы.
Я подредактировал ваш документ. Теперь, вставляя фамилию имя и отчество в поле, инициалы будут подставлятся в нужные места, вами указанные.
Скачать файл можете отсюда: http://slil.ru/28439909
Сообщите о результатах.
P.S. Я бы вам рекомендовал использовать шаблоны вместо того, чтобы создавать поля непосредственно в документах. Есть шаблон - нет необходимости править каждый раз старый документ.
Спасибо огромное! Но у меня возникают такие ошибки:
1. При первом введении всё ок. При удалении ФИО выдаёт ошибку макроса.
2. При повторном введении, к тому месту где уже стоит фамилия и инициалы от первого изменения, прибавляется ещё одна фамилия и инициалы.
http://slil.ru/28440032
И ещё не совсем поняла про шаблоны.
Я открываю файл, делаю его сразу сохранить как и там уже вношу все изменения. А в чём разница если первоначальный исходник можно сказать будет сохранён в виде
шаблона или в виде просто документа?
А зачем удалять фамилию? Для другого клиента? Вот потому-то я и говорю о необходимости иметь шаблон, а не править документ.
Что касается добавления новых данных в места закладок, то это из-за того, что в макросе нет механизма удаления текста после закладок (не нужно).
Разница между шаблоном и документом есть и существенная. Имея один шаблон на его основе вы создаете документы для каждого клиента (один документ - один клиент). В этом случае у вас нет необходимости править поля и не возникнут те ситуации, о которых вы упоминаете.
Антон! Ещё раз Вам огромное спасибо!
Здравствуйте! Благодаря Вам у меня получилось сделать 2 шаблона договоров: один для ИП, второй для ООО. Но сейчас стоит задача их объединить в один, и чтобы в зависимости от условий (ИП или ООО) в таблички вставлялись данные с разных полей. Бьюсь над этим уже несколько дней. Попыталась сделать общий договор, пришлось отказаться от сокращения инициалов, так как ФИО в разных падежах. Но тогда в табличке не получается сделать выравнивание никак. Да и не сильно договор автоматизированный получился. Может есть какой то выход?
Все три файла здесь:
http://slil.ru/28454068
Здравствуйте ещё раз. Подскажите, есть решение у моей задачи?
Елена, еще не смотрел, не было времени.
Елена, а зачем вы хотите использовать один шаблон вместо двух? В чем выгода будет? На мой взгляд, это усложнение.
Я бы на вашем месте сделал бы (если бы профессионально работал с заказчиками) что-то похожее вот на это решение: Использование форм для ввода данных в документ.
То есть, была бы форма с нужными полями. Заполнялись только те, которые нужны (в зависимости от формы собственности) и затем заполненные поля подставлялись уже в документ.
Спасибо. Хорошее решение. Вопросы написала в соответствующий раздел: http://wordexpert.ru/page/ispolzovanie-form-dlya-vvoda-dannyih-v-dokument
Подскажите, плиз! Каким образом можно использовать функции при выходе из поля формы. Интересует следующая возможность: в первом текстовом поле вводится число либо текст, при выходе вызывается моя функция, во втором текстовом поле появляется результат от работы функции. Пытался использовать "Поле" и вводить в нем Формулы, все время выдается синтаксическая ошибка. Может быть у кого есть ссылка на описание.
Спасибо!
Может быть вам и не нужен макрос, а можно обойтись формулами в полях? Посмотрите этот пример
Здравствуйте! У меня есть шаблон письма word2007, с полями ФИО, адрес, сумма. Есть список адресатов, которым нужно отправить это письмо (таблица с графами ФИО, адрес, пол, сумма). Вопрос как сделать, чтобы при создании нового документа на основе шаблона данные из соответствующих граф списка вставлялись в соответствующие поля шаблона. Хорошо бы еще, чтоб при обращении "Уважаем-ая, -ый" окончание менялось в зависимости от пола.
Вам нужно использовать Слияние. Почитайте эту тему на форуме, возможно, разберётесь. Также имеется заметка на нашем сайте, посвящённая слиянию. В скором времени появится заметка о слиянии в более современных версиях редактора.
А вот и заметка.
Как ввести вычисление вне таблицы?
Это делается таким образом:
выделяешь таблицу, далее меню Вставка-Закладка, называешь закладку к примеру "Таблица1"
далее в любом месте документа делаешь меню Вставка - Поле, в появившемся окне нажимаешь кнопку Формула.
в выпадающем списке "Вставить функцию" выбираешь что требуется
в выпадающем списке "Вставить закладку" выбираешь созданную тобой закладку "Таблица1"
указываешь ячейки которые надо посчитать.
пробовал по этому примеру пишет: !Синтаксическая ошибка, [
А как можно осуществить данный макрос без текстового поля? Т.е. есть в тексте ФИО полностью. Выделяем ФИО, вставляем закладку bm, там где необходимо закладку fio, запускаем макрос и готово - фамилия с инициалами стоит. Но каждый раз в этом случае макрос приходится запускать вручную. А чтобы его не вручную? И без текстового поля панели форм?
Здравствуйте, захотелось попользоваться Вашей добротой и вставить данный макрос себе в документ, однако творится с ним что то непонятное, самая частая ошибка выделяет предпоследнюю строчку. если макрос запустить в ручную он прекрасно выполняется, а ставя его на выполнение при выходе выкидывает ошибку. Буду благодарен если укажете в чём проблема.
Обратитесь на наш форум, там помогут.
Здравствуйте, хотела бы к Вам обратиться за помощью.
Есть Wordовский файл - шаблон (как я его называю), в котором на первом листе есть таблица с изменяемыми данными(пользователь каждый раз вводит туда информацию о новом клиенте, который заключает договор) :ФИО, адрес, организация и т.д), а ниже на следующих листах договор, под ним - на третьем листе - акт об оказании услуг, на 4м листе - счет на оплату.
Как сделать так, чтобы данные с первого листа раскидывались в нужные места документов на 2,3 и 4м листах?
В OpenOffice всё работало, но придя на новое место работы, где он отсутствует и есть только 2003 WORD, я даже не знаю что и делать. Времени на договора из-за этого уходит уйма, так как приходится одни и те же данные вбивать в ручную в разные документы. Возможно ли что-то сделать или нет?
Всё получилось. Уже можете не затрудняться вопросом
Екатерина, чтобы оперативно получить ответ на свой вопрос, его лучше задавать на форуме, а не в комментариях
Разве нет способа реализовать это без макроса. Например Поле с инициалом имени ссылается на поле с именем и какой либо формулой оставляет от него одну первую букву. а? По крайней мере, я ищу такой способ. Но пока не нашёл... к сожалению.
Добрый день, при нажатии на TAB выдает ошибку "4605" так как ссылается на защищенную область в документе, как возможно решить эту проблему?