Статьи из блога
Как активировать гиперссылки в защищенном документе с формами
Вопрос:
У меня возникла проблема при создании форм. Я делала анкету для удобства с полями ответа с помощью панели Формы. Все хорошо. Но у меня есть тонкость - в анкете есть гиперссылка на мейл. Когда я закрываю ее на замок, то гиперссылка отказывается работать. Так и не смогла это победить. Буду признательна, если подскажите как это можно в Формах обойти.
Этот вопрос оказался чрезвычайно трудным для меня и тех людей, которых я спрашивал. Видимо никто просто не сталкивался с такой проблемой.
Но варианты решения есть. Первый вариант подсказал Александр Щукин - декан Факультета переподготовки специалистов СПбГПУ. Он предложил сделать несколько разделов в документе. А гиперссылка должна быть в том разделе, где нет полей формы.
Второй вариант предложил Леонид Бродский.
Подробности первого варианта:
- После ввода ваших данных (тексты, формы) в документ, но перед тем, как включить в него гиперссылку, зайдите в меню Вставка (Insert) и выберите команду Разрыв (Break). Откроется диалоговое окно. Отметьте в группе Новый раздел (Section break types) радиокнопку на текущей странице (Continuous) и нажмите ОК.
- Введите ваши гиперссылки.
- Повторите вставку разделов, если далее в документ вам требуется вставить другие данные, подлежащие защите.
- После того, как вы все оформили, для защиты документа зайдите в меню Сервис (Tools) и выберите команду Установить защиту (Protect Document). Откроется диалоговое окно (справедливо для версий Word младше 2002):
- Выберите радиокнопку ввода данных в поля форм и нажмите рядом стоящую кнопку Разделы.
- В новом окошке отметьте галочками те разделы, которые нужно защитить, и снимите галочки у разделов, не подлежащих защите.
- Нажимаете ОК и закрываете окна.
Соответственно в Word 2003 справа откроется панель Область задач (Task Pane):
Кстати, чтобы увидеть на странице ваши вставленные разделы, и тем самым соориентироваться в них и их положении, нужно отобразить на странице непечатаемые символы. Для этого служит специальная кнопка на панелях инструментов.
Теперь документ с формами защищен, а ссылки будут активны.
Подробности второго варианта:
Использование разделов - остроумное решение, однако при этом некоторые части документа остаются незащищёнными. Предлагаю два других способа решения задачи, оба без гиперссылок. Их можно проверить в прилагаемом документе (скачать). К сожалению, оба способа нельзя отнести к стандартным возможностям Word, так как они требуют, пусть и очень простого, но программирования.
Итак, первый способ.
- Я создал новый документ и вставил в него два поля формы.
- Открыл редактор Visual Basic («Alt+F11») и создал следующую макрокоманду (вы можете просто вклеить её текст в окно редактора):
Public Sub UseLink() ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 1" End Sub
Как видите, здесь указан адрес; его придётся заменить на нужный вам (и предмет письма, если он вам нужен). Имя макрокоманды - произвольное (в нашем случае это будет UseLink).
- Открыл окно свойств второго поля. В поле Текст по умолчанию (Default text) ввёл адрес электронной почты. Он, в общем-то, не играет никакой роли и нужен только для того, чтобы показать назначение поля. Из списка Выполнить макрос при входе (Run macro on" "Entry") выбрал макрокоманду UseLink.
Таким образом, эта макрокоманда будет автоматически проигрываться всякий раз, когда фокус перемещается из другого поля в данное.
- Защищаю форму.
На этом способ заканчивается. Его недостатки в том, что текст внутри поля можно редактировать, кроме того, когда текстовый курсор уже находится в поле, никакими щелчками мышки письмо не создать.
Второй способ, более хитроумный и трудоёмкий.
- Открыть панель инструментов Элементы управления (Control Toolbox) (нажать правую кнопку мышки на панели инструментов и выбрать панель Элементы управления (Control Toolbox) из списка). В принципе, годится любой объект из Control Toolbox, но я выбрал метку Надпись (Label). Нажав соответствующую кнопку на Control Toolbox, я вставил метку в документ.
- Нажав правой кнопкой на метке и выбрав Свойства (Properties), открыл окно свойств метки. По желанию можно изменить имя метки (у меня MailLabel). Свойство Caption заменил на адрес электронной почты - опять же, только для того, чтобы показать назначение объекта. По желанию можно изменить шрифт (Font); я заменил на подчёркнутый.
- Далее - для красоты. Настроить размеры метки, растягивая её мышкой. Удобно настроить высоту, если в окне свойств включить AutoSize = True, а потом отключить его (False). Всё равно метка оказывается выше другого текста. Выделяю её, выбираю в меню Формат (Format) команду Шрифт (Font) и на странице Интервал (Caracter spacing) в поле Смещение (Position) устанавливаю Вниз на 3пт (Lowered by 3 points). Теперь внешне метка выглядит как нормальная гиперссылка, только что не работает.
- Делаю на метке двойной щелчок. Открывается редактор Visual Basic с пустой процедурой:
Private Sub MailLabel_Click() End Sub
- Вставляю в процедуру строку, чтобы получилось следующее:
Private Sub MailLabel_Click() ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 2" End Sub
Вместо пунктов 4 и 5 можно просто вставить приведённый код в редактор для объекта ThisDocument.
Важно! На панели Элементы управления (Control Toolbox) есть кнопочка в виде треугольника с карандашом Выход из режима конструктора (Exit Design Mode). Она нажата. Чтобы иметь возможность защитить форму, кнопку надо отпустить (отжать). Чтобы потом продолжить редактирование метки, кнопку надо опять нажать.
- Защищаю форму.
При каждом нажатии мышкой на метке создаётся новое письмо. Способ более трудоёмкий, но вроде бы, работает лучше.
Метки: гиперссылки | защита документа | макросы | формы | элементы управления
Просмотров: 21503
Подписаться на комментарии по RSS
Версия для печати
Еще записи по вопросам использования Microsoft Word:
- 10 вопросов и ответов по редактору Word (1 часть)
- 3 способа очистки списка недавно открытых документов
- Word 2007: добавляем свою вкладку и свои команды
- Word 2007: полотно, рисунки, линии
- Word 2007: смена формата сохранения файла
- Word 97 - решение проблемы с отображением символов на линейке
- Абзац с цветным фоном
- Автоматизация текстового набора в Word
- Автоматическая запись макроса
- Автоматическая нумерация билетов
- Автоматическая расстановка переносов
- Автоматическое обновление полей при открытии документа
- Автоматическое сохранение документа при его закрытии
- Автотекст с последовательной нумерацией
- Белый текст на синем фоне в Word 2007
- Быстрая смена ориентации страниц документа
- Быстрое перемещение между открытыми документами Word
- Быстрое создание нового документа на основе шаблона
- Быстрый ввод текста с помощью команды =rand()
- Ввод повторяющихся фрагментов текста в Word 2007
- Ввод часто повторяющихся фрагментов текста
- Вертикальное выравнивание текста
- Возможно ли запретить копирование текста из документа Word?
- Вопрос о работе с графиками (диаграммами) в Word
- Вопросы и ответы о гиперссылках в редакторе Word
Комментариев: 2
При форматировании кода в этой статье вызов метода ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 2"
разбился на две строки. Так код работать не будет. Надо или на одной строке, или использовать символ продолжения (_). Т.е. на одной строке: ActiveDocument.FollowHyperlink _
и на другой строке:
Address:="mailto:ваш@email?Subject=Test 2"
Здравствуйте. А как сделать, чтобы при наведении курсор становился "ручкой"?