Защита паролем Word 2007 для отдельных слов

Можно ли поставить пароль на одно слово внутри документа Word?

Я хочу написать системную документацию из нашей ИТ-структуры. Я также хочу поместить пароли в документ. Теперь я хочу, чтобы вы вводили пароль «MASTER», чтобы разблокировать пароли внутри документа. Если не вводить пароль, пароли внутри документа должны быть невидимыми или что-то в этом роде.

Это возможно?


person Hauke    schedule 15.09.2011    source источник


Ответы (1)


Да, это возможно. Чтобы это работало, мы должны использовать комбинацию встроенной в Word защиты документов, атрибута скрытого текста и нескольких приемов VBA.

Во-первых, отформатируйте все пароли в документе как скрытый текст. (Для тех, кто не знаком, скрытый текст виден, только если для функции Показать/Скрыть установлено значение true.)

Затем добавьте код, чтобы убедиться, что скрытый текст не будет отображаться, а также защитить документ от редактирования при каждом его открытии:

Private Sub Document_Open()
AddProtection
End Sub

Sub AddProtection()
With ActiveDocument
    .ActiveWindow.View.ShowAll = False
    .ActiveWindow.View.ShowHiddenText = False
    .Application.Options.PrintHiddenText = False
    .Protect Type:=wdAllowOnlyReading, NoReset:=True, Password:="DesiredPassword"
End With
End Sub

Поскольку пользователи Word обычно могут отображать скрытый текст в любое время, нам также необходимо взять под контроль эту функцию. Большинство команд меню и ленты можно перехватить, создав модуль, содержащий подпрограммы, названные в честь перехваченных команд. Имя Sub ShowAll позволит нам управлять этой функцией и отображать скрытый текст только при вводе пароля:

Sub ShowAll()

If ActiveDocument.ProtectionType = wdAllowOnlyReading Then
    'Do nothing
Else 'restore the Ribbon's toggle function
    If ActiveDocument.ActiveWindow.View.ShowAll = True Then
        ActiveDocument.ActiveWindow.View.ShowAll = False
    Else
        ActiveDocument.ActiveWindow.View.ShowAll = True
    End If
End If

End Sub

Наконец, мы добавляем код, запрашивающий у пользователя пароль и, если он введен правильно, отображаем текст, который ранее был скрыт:

Sub RemoveProtection()

Dim strPassword As String
strPassword = InputBox("Enter document password.")
ActiveDocument.Unprotect Password:=strPassword
If ActiveDocument.ProtectionType = wdNoProtection Then
    ActiveDocument.ActiveWindow.View.ShowHiddenText = True
End If

End Sub

После ввода всего кода VBA щелкните правой кнопкой мыши модуль в среде IDE, выберите Свойства проекта и назначьте отдельный пароль на вкладке "Защита". Это не позволит опытным пользователям получить встроенный пароль или изменить код.

Все, что осталось сделать, это создать кнопку QAT в Word (она видна только для этого документа) и присвоить ей подпрограмму RemoveProtection. Всякий раз, когда документ открывается, пароли будут скрыты и защищены от редактирования, но затем их можно будет открыть, нажав кнопку QAT и введя правильный пароль.

ИЗМЕНИТЬ

Когда я впервые ответил на этот вопрос, я не учел, что в Word есть параметр скрытого текста, который можно включить отдельно от параметра «Показать все». Кроме того, скрытый текст можно распечатать с помощью опции печати. Я добавил код в AddProtection выше, чтобы отключить эти настройки.

Дальнейшее тестирование также показало, что пользователь Word 2007 может вручную открыть Office Orb|Параметры|Экран, чтобы отобразить скрытый текст, изменив Показать все метки форматирования или Параметры скрытого текста вручную. Чтобы избежать этого, необходимо создать настройку ленты и загрузить ее вместе с документом.

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

person joeschwa    schedule 16.09.2011