Word 2007 защита паролем для отдельных слов - PullRequest
0 голосов
/ 15 сентября 2011

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

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

Возможно ли это?

1 Ответ

1 голос
/ 16 сентября 2011

Да, это возможно.Чтобы сделать это, мы должны использовать комбинацию встроенной защиты документов 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 | Параметры | Показать , чтобы открытьскрытый текст, изменив Показать все метки форматирования или Скрытый текст вручную.Чтобы избежать этого, необходимо создать настройку ленты и загрузить ее вместе с документом.

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

...