Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2009, 16:16   #1
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
Вопрос Вопрос по закрытию файла

Добрый день всем!

Есть файл с кучами макросов внутри, также при открытии часть функций блокируется, при закрытии функции разаблокироваются.

При этом когда нажимаем на "Х" закрыть, выскакивает "сохранить данный документ" -да-нет-отмена.

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

Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
          EnableControl 11111, True
End Sub
вопрос в следующем, подскажите код на закрытие с убранной функцией "Отмена"

Чтобы можно было закрыть файл либо сохранив его либо нет... но без "отмены"

ещё пробовал
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Ans = MsgBox("Закрыть текущий файл " & ThisWorkbook.Name & " ?", vbExclamation + vbYesNo)
If Ans = vbYes Then ThisWorkbook.Save
Application.DisplayAlerts = False
If Ans = vbNo Then Application.Quit
    End If
End Sub
Но если выбрать "нет", то закрывается разом весь Excel и все открытые файлы....а мне нужен только текущий файл

Последний раз редактировалось serafim09; 16.09.2009 в 17:26.
serafim09 вне форума Ответить с цитированием
Старый 16.09.2009, 19:00   #2
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте serafim09.
если речь о "Закрыть текущий файл " или нет -подкорректируйте код подобным образом:
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Ans = MsgBox("Закрыть текущий файл " & ThisWorkbook.Name & " ?", vbExclamation + vbYesNo)
If Ans = vbYes Then
    ThisWorkbook.Save
Else
    Cancel = True
End If
End Sub
для сохранения код должен быть несколько иной:
Код:
Dim b As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If b Then Exit Sub
Ans = MsgBox("Сохранить закрываемый файл " & ThisWorkbook.Name & " ?", vbExclamation + vbYesNo)
If Ans = vbYes Then
    ThisWorkbook.Save
Else
    Application.DisplayAlerts = False
    b = True
    ActiveWindow.Close
End If
End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 17.09.2009, 05:23   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
при закрытии функции разаблокироваются.
Вообще-то, делают наоборот. При закрытии (сохранении) требуемые функции в файле должны быть заблокированы, нужные листы скрыты и т.д. А при открытии, макрос разрешает (разблокирует) только то, что Вы захотите. Иначе, кто помешает пользователю открыть файл, предотвратив при этом автозапуск макросов при открытии (удерживая клавишу Shift)?
При таком подходе, Ваш вопрос отпадает сам собой.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 17.09.2009, 17:15   #4
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Вообще-то, делают наоборот. При закрытии (сохранении) требуемые функции в файле должны быть заблокированы, нужные листы скрыты и т.д. А при открытии, макрос разрешает (разблокирует) только то, что Вы захотите. Иначе, кто помешает пользователю открыть файл, предотвратив при этом автозапуск макросов при открытии (удерживая клавишу Shift)?
При таком подходе, Ваш вопрос отпадает сам собой.


А как же быть тогда в случае если пользователь пользуется своими файлами, а если мой документ закрыли с заблокированными функциями, то он не сможет нормально работать?
serafim09 вне форума Ответить с цитированием
Старый 17.09.2009, 17:20   #5
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Teslenko_EA Посмотреть сообщение
Здравствуйте serafim09.
[/code]для сохранения код должен быть несколько иной:
Код:
Dim b As Boolean
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If b Then Exit Sub
Ans = MsgBox("Сохранить закрываемый файл " & ThisWorkbook.Name & " ?", vbExclamation + vbYesNo)
If Ans = vbYes Then
    ThisWorkbook.Save
Else
    Application.DisplayAlerts = False
    b = True
    ActiveWindow.Close
End If
End Sub
Евгений.
при таком коде у меня при выборе "нет" два раза выскакивает сообщение о закрытии....
serafim09 вне форума Ответить с цитированием
Старый 18.09.2009, 05:23   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
А как же быть тогда в случае если пользователь пользуется своими файлами, а если мой документ закрыли с заблокированными функциями, то он не сможет нормально работать?
Посредством ввода пароля, позволяющего делать то, что Вы разрешите.
А иначе, какой смысл в запретах и блокировках?
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.09.2009, 10:02   #7
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посредством ввода пароля, позволяющего делать то, что Вы разрешите.
А иначе, какой смысл в запретах и блокировках?
Спасибо) учту
serafim09 вне форума Ответить с цитированием
Старый 18.09.2009, 10:08   #8
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

А можно вариант любых запретов через пароль с макросом?
serafim09 вне форума Ответить с цитированием
Старый 18.09.2009, 10:43   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите Эту тему.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.09.2009, 10:57   #10
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите Эту тему.
Спасибо! буду ознакамливаться
serafim09 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel VBA, Экспорт в txt, кодировка файла UTF-16 LE/UCS-2 Little Endian+еще один интересный вопрос Maxximus Microsoft Office Excel 17 04.09.2009 20:03
Перезапись файла без путя или определение расположения файла программы The Best Общие вопросы Delphi 4 13.07.2009 22:50
Вопрос по закачке файла с инета. Yuran Работа с сетью в Delphi 2 02.10.2008 14:08