Защита документа WORD от печати и копирования
(обращений: 3211 )

Работа с Word
или
как защитить ваш документ от копирования информации или печати?

Иногда возникает необходимость защитить документ от печати, копирования содержимого или просто от доступа пользователя к некоторым функциям. Для этого применяются различные форматы (всем известная фирма Adobe), различный программный код и т.д. Документы Microsoft Office для этого не предусмотрены. Но защиту организовать довольно просто через макросы. Для этого надо необходимо знать всего несколько принципов:

1. Автоматически запускаемые макросы
Если присвоить макросу специальное имя, то Word будет выполнять его автоматически.

Имя макроса

Когда выполняется

AutoExec При каждом запуске Word или при загрузке глобального шаблона
AutoNew При каждом создании нового документа
AutoOpen При каждом открытии существующего документа
AutoClose При каждом закрытии документа
AutoExit При каждом закрытии Word или выгрузке глобального шаблона

2. Модификация команд Word
Большинство команд Word разрешается модифицировать, заменяя их макросами.
В Word процедура, имя которой совпадает с именем встроенной команды (внутреннее имя) или процедура с именем Main в модуле, имя которого совпадает с именем встроенной команды, заменяет собой соответствующую встроенную команду во всех меню на то время, пока доступен содержащий ее модуль.
Например, если вы создадите макрос с именем FilePrint, то при вызове окна печати через меню, через панель инструментов или при нажатии Ctrl+P, будет вызываться ваш макрос и ваш код, который будет прописан внутри макроса.
Посмотреть имена команд можно через Вид -> Панели инструментов -> Настройка (кнопка "Клавиатура").

3. Работа с меню
В Word, как и в Access можно создавать (редактировать) свои меню, панели инструментов, разрешать или запрещать доступ к элементам меню или панелей инструментов, создавать и удалять свои собственные меню и панели инструментов.
Следующая команда делает недоступным пункт меню "Файл":

CommandBars("menu bar").Controls("файл").Enabled = False

Чтобы сделать невидимым этот же пункт:

CommandBars("menu bar").Controls("файл"). Visible = False
Можно программно добавлять, редактировать и удалять элементы меню и панели инструментов, создавать свои меню и панели инструментов.

Примечание: для получения полной информации об этих методах обратитесь к справочной информации.

Применяя вышеуказанные комбинированные методы можно создать код, который заменяет команды Копирования, Вырезания, Печати на свой программный код.
Но все эти методы работают, когда включены макросы, при отключении макросов защита уже не работает.
Но есть один простой выход: нужно вспомнить об одной замечательной особенности Microsoft Office - Автоматизация. Другими словами любое приложение Microsoft Office может работать с Word и наоборот. Для выполнения защиты просто необходима внешняя программа или приложение, которое будет запускать Word, например Access и в этом случае НЕ СПРАШИВАЕТСЯ диалоговое окно на запрет макросов, а защита срабатывает!!!

Простейший код для открытия Word из Access (чтобы Word был доступен из других приложений через Автоматизацию нужно, прежде всего, создать ссылку на библиотеку типов Word):

Dim objword Dim Object
Dim objword = Dim("Word.Application")
'делаем видимым приложение Word
objword.Visible = True
'для создания нового документа применяется метод Add
'objword.Documents.Add
' а для открытия метод Open (например, открывается шаблон с кодами защиты
'или документ, основанный на этом шаблоне и в этом случае НЕ 'СПРАШИВАЕТСЯ диалоговое окно на запрет макросов, а защита срабатывает!!!!!

objword.Documents.Open ("c:\мои документы\PrintNo.dot")
'или открывается любой другой документ, созданный на основе шаблона с защитой.

'Можно объявить объектную переменную и по-другому (например для Word97):
Dim objword as Word.Application.8
Set objword=CreateObject ("Word.Application.8)

Пример реализации можно загрузить здесь

Примечание:
В прилагаемых двух шаблонах по-разному реализованы некоторые функции:
* PrintNo.dot - делаются недоступными некоторые меню и элементы панели инструментов, заменены стандартные функции на свой код.
* PrintFalse.dot - строка меню и панели инструментов полностью скрыты, заменены стандартные функции на свой код.
* CloseAll - делается недоступными некоторые меню и …
Запуск Word осуществляется с помощью файла OpenWord.mdb (в формате Access97), который свободно конвертируется в другие форматы.
По умолчанию разархивировать в папку c:\Мои документы