Статьи из блога

Как активировать гиперссылки в защищенном документе с формами

Вопрос:

У меня возникла проблема при создании форм. Я делала анкету для удобства с полями ответа с помощью панели Формы. Все хорошо. Но у меня есть тонкость - в анкете есть гиперссылка на мейл. Когда я закрываю ее на замок, то гиперссылка отказывается работать. Так и не смогла это победить. Буду признательна, если подскажите как это можно в Формах обойти.

Этот вопрос оказался чрезвычайно трудным для меня и тех людей, которых я спрашивал. Видимо никто просто не сталкивался с такой проблемой.

 

Но варианты решения есть. Первый вариант подсказал Александр Щукин - декан Факультета переподготовки специалистов СПбГПУ. Он предложил сделать несколько разделов в документе. А гиперссылка должна быть в том разделе, где нет полей формы.

 

Второй вариант предложил Леонид Бродский.

 

Подробности первого варианта:

  • После ввода ваших данных (тексты, формы) в документ, но перед тем, как включить в него гиперссылку, зайдите в меню Вставка (Insert) и выберите команду Разрыв (Break). Откроется диалоговое окно. Отметьте в группе Новый раздел (Section break types) радиокнопку на текущей странице (Continuous) и нажмите ОК.
  • Введите ваши гиперссылки.
  • Повторите вставку разделов, если далее в документ вам требуется вставить другие данные, подлежащие защите.
  • После того, как вы все оформили, для защиты документа зайдите в меню Сервис (Tools) и выберите команду Установить защиту (Protect Document). Откроется диалоговое окно (справедливо для версий Word младше 2002):

     

  • Защита документа с формой

     

    Соответственно в Word 2003 справа откроется панель Область задач (Task Pane):

     

    Защита документа с формой

     

  • Выберите радиокнопку ввода данных в поля форм и нажмите рядом стоящую кнопку Разделы.
  • В новом окошке отметьте галочками те разделы, которые нужно защитить, и снимите галочки у разделов, не подлежащих защите.
  • Кстати, чтобы увидеть на странице ваши вставленные разделы, и тем самым соориентироваться в них и их положении, нужно отобразить на странице непечатаемые символы. Для этого служит специальная кнопка на панелях инструментов.

  • Нажимаете ОК и закрываете окна.

Теперь документ с формами защищен, а ссылки будут активны.

 

Подробности второго варианта:

 

Использование разделов - остроумное решение, однако при этом некоторые части документа остаются незащищёнными. Предлагаю два других способа решения задачи, оба без гиперссылок. Их можно проверить в прилагаемом документе (скачать). К сожалению, оба способа нельзя отнести к стандартным возможностям Word, так как они требуют, пусть и очень простого, но программирования.

 

Итак, первый способ.

  1. Я создал новый документ и вставил в него два поля формы.
  2. Открыл редактор Visual Basic («Alt+F11») и создал следующую макрокоманду (вы можете просто вклеить её текст в окно редактора):

    Public Sub UseLink()
    ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 1"
    End Sub

    Как видите, здесь указан адрес; его придётся заменить на нужный вам (и предмет письма, если он вам нужен). Имя макрокоманды - произвольное (в нашем случае это будет UseLink).

  3. Открыл окно свойств второго поля. В поле Текст по умолчанию (Default text) ввёл адрес электронной почты. Он, в общем-то, не играет никакой роли и нужен только для того, чтобы показать назначение поля. Из списка Выполнить макрос при входе (Run macro on" "Entry") выбрал макрокоманду UseLink.

    Таким образом, эта макрокоманда будет автоматически проигрываться всякий раз, когда фокус перемещается из другого поля в данное.

  4. Защищаю форму.

На этом способ заканчивается. Его недостатки в том, что текст внутри поля можно редактировать, кроме того, когда текстовый курсор уже находится в поле, никакими щелчками мышки письмо не создать.

 

Второй способ, более хитроумный и трудоёмкий.

  1. Открыть панель инструментов Элементы управления (Control Toolbox) (нажать правую кнопку мышки на панели инструментов и выбрать панель Элементы управления (Control Toolbox) из списка). В принципе, годится любой объект из Control Toolbox, но я выбрал метку Надпись (Label). Нажав соответствующую кнопку на Control Toolbox, я вставил метку в документ.
  2. Нажав правой кнопкой на метке и выбрав Свойства (Properties), открыл окно свойств метки. По желанию можно изменить имя метки (у меня MailLabel). Свойство Caption заменил на адрес электронной почты - опять же, только для того, чтобы показать назначение объекта. По желанию можно изменить шрифт (Font); я заменил на подчёркнутый.
  3. Далее - для красоты. Настроить размеры метки, растягивая её мышкой. Удобно настроить высоту, если в окне свойств включить AutoSize = True, а потом отключить его (False). Всё равно метка оказывается выше другого текста. Выделяю её, выбираю в меню Формат (Format) команду Шрифт (Font) и на странице Интервал (Caracter spacing) в поле Смещение (Position) устанавливаю Вниз на 3пт (Lowered by 3 points). Теперь внешне метка выглядит как нормальная гиперссылка, только что не работает.
  4. Делаю на метке двойной щелчок. Открывается редактор Visual Basic с пустой процедурой:

    Private Sub MailLabel_Click()
    End Sub
  5. Вставляю в процедуру строку, чтобы получилось следующее:

    Private Sub MailLabel_Click()
    ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 2"
    End Sub

    Вместо пунктов 4 и 5 можно просто вставить приведённый код в редактор для объекта ThisDocument.

    Важно! На панели Элементы управления (Control Toolbox) есть кнопочка в виде треугольника с карандашом Выход из режима конструктора (Exit Design Mode). Она нажата. Чтобы иметь возможность защитить форму, кнопку надо отпустить (отжать). Чтобы потом продолжить редактирование метки, кнопку надо опять нажать.

  6. Защищаю форму.

При каждом нажатии мышкой на метке создаётся новое письмо. Способ более трудоёмкий, но вроде бы, работает лучше.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 2

  1. Леонид Бродский
    06.12.2006 в 12:42 | #1

    При форматировании кода в этой статье вызов метода ActiveDocument.FollowHyperlink Address:="mailto:ваш@email?Subject=Test 2"

    разбился на две строки. Так код работать не будет. Надо или на одной строке, или использовать символ продолжения (_). Т.е. на одной строке: ActiveDocument.FollowHyperlink _

    и на другой строке:

    Address:="mailto:ваш@email?Subject=Test 2"

  2. Елена
    13.02.2013 в 01:02 | #2

    Здравствуйте. А как сделать, чтобы при наведении курсор становился "ручкой"?

Оставьте комментарий!

(обязательно)

^ Наверх