Автор Тема: Запрет на сохранение документа Word  (Прочитано 6135 раз)

sashgera

  • Гость
Здравствуйте.
Мне нужно запретить сохранение документа word, в excel делал так:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Me.Saved = True 'закрываем без сохранения
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True 'отменяем сохранение
End Sub

И чтобы этот макрос сохранить, вводил в Immediate:
Application.EnableEvents = False

А как это можно сделать в word?

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Re: Запрет на сохранение документа Word
« Ответ #1 : 14 Август 2014, 14:29 »
sashgera, про работу с событиями в программе "Word" можете сначала почитать здесь: http://forumvba.ru/VBAHelp/WordEvents_Application/WordEvents_Application.htm

sashgera

  • Гость
Re: Запрет на сохранение документа Word
« Ответ #2 : 14 Август 2014, 21:06 »
Спасибо за ссылку, статью внимательно прочитал, но в ней не указано как запретить сохранение документа word. Тот код, который я привел выше, в word не работает.

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Re: Запрет на сохранение документа Word
« Ответ #3 : 14 Август 2014, 21:16 »
sashgera, вот этот код не позволяет сохранить файл: при нажатии кнопки "Сохранить" ничего не происходит.
Этот код должен находиться в модуле класса.

Private Sub myApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub


Примечание

Статья про то, как работать с событиями программы "Word": http://forumvba.ru/VBAHelp/WordEvents_Application/WordEvents_Application.htm

sashgera

  • Гость
Re: Запрет на сохранение документа Word
« Ответ #4 : 15 Август 2014, 02:37 »
Еще раз спасибо, разобрался и все получилось, документы word не сохраняются. Только вот не нужный msgbox Сохранить изменения...
Но я, наверное, не правильно задал вопрос, в статье описано как сделать событие программы word, а мне нужно событие файла:
чтобы в одном конкретном файле, не срабатывало сохранение, а при его закрытии (нажатие на крестик) - также закрывался без сохранения и без msgbox.
Может быть дадите ссылку на такую статью?

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Re: Запрет на сохранение документа Word
« Ответ #5 : 15 Август 2014, 08:20 »
sashgera, в программе "Word" нет события файла, которое относится к сохранению документа.
Все события файла можно так посмотреть:
  • перейдите в VBA;
  • в окне "Project - Имя проекта" найдите "Normal", а в "Normal" найдите "ThisDocument";
  • щёлкните два раза по "ThisDocument" - справа отобразится содержимое модуля "ThisDocument";
  • здесь и можно увидеть события файла. Для этого: в области кода, в левом выпадающем списке выберите "Document". Теперь в правом выпадающем списке Вы увидите все события файла.
У файла нет события, относящегося к сохранению, поэтому и нужно использовать события программы "Word".

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Re: Запрет на сохранение документа Word
« Ответ #6 : 15 Август 2014, 08:25 »
sashgera, чтобы не сохранялось в конкретном файле, нужно сделать такие действия. Обратите внимание, что у процедуры:

Private Sub myApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True
End Sub

есть аргумент "Doc". Этот аргумент представляет собой файл, который отображается на мониторе, когда пользователь нажимает кнопку "Сохранить". Прежде, чем использовать "Cancel = True", узнайте, какой файл отображается на мониторе. Например, так:

Private Sub myApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
    If Doc.Name = "имя файла" Then
        Cancel = True
    End If
End Sub

Оффлайн Администратор

  • Administrator
  • Сообщений: 1939
Re: Запрет на сохранение документа Word
« Ответ #7 : 15 Август 2014, 08:34 »
А вот событие, относящиеся к закрытию файла, у Word-файла есть.
Поместите в VBA, в нужный файл, в модуль "ThisDocument" такую процедуру:

Private Sub Document_Close()
    Me.Saved = True
End Sub

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

sashgera

  • Гость
Re: Запрет на сохранение документа Word
« Ответ #8 : 15 Август 2014, 13:03 »
Спасибо за развернутый ответ, все получилось!