powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как запретить сохранение Word Document пользователем ?
10 сообщений из 10, страница 1 из 1
Как запретить сохранение Word Document пользователем ?
    #34586585
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как запретить сохранение Word документа пользователем ?
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34587324
Фотография Залетин Виталий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefiКак запретить сохранение Word документа пользователем ?

Надо написать макросы, соответствующие специальным командам ворда (меню Сервис-Макрос-Макросы-Команды Ворд). Написать надо приблизительно такое:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Sub FileSave()
'
' FileSave Макрос
' Сохранение активного документа или шаблона
'
    MsgBox "Вы не имеете права сохранять документы!", vbCritical
    Exit Sub
    
    ActiveDocument.Save
End Sub

Sub FileSaveAll()
'
' FileSaveAll Макрос
' Сохранение всех открытых файлов, макросов и элементов автотекста
'
    MsgBox "Вы не имеете права сохранять документы!", vbCritical
    Exit Sub
    
    Documents.Save
End Sub

Sub FileSaveAs()
'
' FileSaveAs Макрос
' Сохранение копии документа в другой файл
'
    MsgBox "Вы не имеете права сохранять документы!", vbCritical
    Exit Sub
    
    Dialogs(wdDialogFileSaveAs).Show
End Sub

Sub FileClose()
'
' FileClose Макрос
' Закрытие всех окон активного документа
'
    If ActiveDocument.Saved = False Then ActiveDocument.Saved = True
    
    WordBasic.FileClose
End Sub

'Выполняется при запуске ворда
Sub Autorun()
    Dim c As CommandBarControl
    
    'Деактивируем все пункты меню "Макрос"
    With Application.CommandBars("Macro")
        For Each c In .Controls
            c.Enabled = False
        Next
    End With
    
    'Закрываем доступ к редактору VB (в меру развитый пользователь без труда деактивирует эти запреты, а так...) и окну макросов
    CustomizationContext = NormalTemplate
    FindKey(BuildKeyCode(wdKeyF11, wdKeyAlt)).Disable
    FindKey(BuildKeyCode(wdKeyF8, wdKeyAlt)).Disable
    
    Application.NormalTemplate.Save
End Sub

Неплохо бы было еще закрыть паролем доступ к проекту Normal из редактора Visual Basic (правой клавишей на слове Normal и выбрать Properties, там перейти на вкладку Protection, установить флажок Lock Project for viewingи внизу ввести пароль)
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34587326
Фотография Залетин Виталий Викторович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только для себя предусмотримте способ туда попадать (например ShowVisualBasicEditor=True)
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34587423
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за развернутый ответ.

Вот только из макросов FileSaveAll и FileClose не работают (в справке про них не нашел).
Помещал их в ThisDocument.
Пробовал под Word2K и 2003.

И еще - вопрос хотелось бы развить :
как сделать так, чтобы пользователь не мог сохранить документ под ТЕМ ЖЕ именем в том же каталоге, но мог сохранять под другим(ну или под тем же , но в другом каталоге) ?
Про атрибут файла "только чтение" я знаю, но не хотелось бы его использовать, т.к. любая секретарша элементарно его снимет, как это написано в справке Word'а.
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34587475
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще , насчет блокирования доступа пользователя в редактор VB:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
'Выполняется при запуске ворда
Sub Autorun()
    Dim c As CommandBarControl
    
    'Деактивируем все пункты меню "Макрос"
    With Application.CommandBars("Macro")
        For Each c In .Controls
            c.Enabled = False
        Next
    End With
    
    'Закрываем доступ к редактору VB (в меру развитый пользователь без труда деактивирует эти запреты, а так...) и окну макросов
    CustomizationContext = ActiveDocument ' NormalTemplate - уж больно глобально ...
    FindKey(BuildKeyCode(wdKeyF11, wdKeyAlt)).Disable
    FindKey(BuildKeyCode(wdKeyF8, wdKeyAlt)).Disable
    
    Application.ActiveDocument.Save  ' NormalTemplate.
End Sub

Пользователь ведь после этих установок еще может воспользоваться окном "Настройка", кликнув на панели правой кнопкой мыши, где доступны Клавиатура...\Настройка Клавиатуры\Сброс для меню сервис- удаление пользовательских и восстановление стандартных сочетаний клавиш для шаблона или документа, выбранного из списка "сохранить изменения в :" ;
или, например, вытащив из окна "Настройка" кнопку "Редактор VB" на панель.
Т.о. образом восстановив доступ в VB редактор.

Или Вы знаете способ - как вообще запретить доступ в VB редактор ?
По моему, это не стоит делать. Т.к. все равно, знакомый макросник через любое другое приложение его откроет, выполнив, например для шаблона normal.dot или Doc файла с запрещенными макросами команды:
With Application.CommandBars("Macro")
For Each c In .Controls
c.Enabled = True
Next
End With
Да оно и ,слава богу, иначе - сами не попадем в редактор VB.
По - моему лучще уж запаролиать проекты VB - это официальней как-то и проще - кто сломал- тот преступник.
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34587705
Диса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefiКак запретить сохранение Word документа пользователем ?

а открыать в режиме только чтения не пробовал?
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34588726
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Диса>
внимательнее читай - я об этом писал выше.
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34589070
Диса
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kefi2 Диса>
внимательнее читай - я об этом писал выше.

Читал-читал, только можно прикрепить спецмакрос именно к доку и в нём открывать файл лишь на чтение или запрещать сохранять, а не делать обычную пометку тока для чтения в аттрибутах файла.
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34591911
JaneDoe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если попробовать что бы при окрытии файл еще и открывался *монопольно*...
если не путаю какая то APIшка нужна, а при закрытии док-та не забыть закрыть (типа close #1)
...
Рейтинг: 0 / 0
Как запретить сохранение Word Document пользователем ?
    #34599112
kefi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЧитал-читал, только можно прикрепить спецмакрос именно к доку и в нём открывать файл лишь на чтение или запрещать сохранять, а не делать обычную пометку тока для чтения в аттрибутах файл

Че-то не вяжется - если файл еще не открыт, то тогда понятно его можно внешним приложением открыть только для чтения, но речь о том, что пользователь уже его открыл/открывает из Проводника. Здесь можно только при открытии документа использовать макрос, но что в нем можно сделать, если он работать будет в УЖЕ открытом дуокументе ?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как запретить сохранение Word Document пользователем ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]