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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 16.12.2008, 13:55   #1
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию Как отследить нажатие кнопки?

Можно ли отследить нажатие кнопки в окне запроса на сохранение документа и повесить на это макрос?
Bezdar вне форума
Старый 16.12.2008, 14:38   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Смотри событие Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума
Старый 16.12.2008, 16:27   #3
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

не поняла, что можно сделать с BeforeSave. А запретить появление окна сохранения можно?
Bezdar вне форума
Старый 16.12.2008, 16:35   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А запретить появление окна сохранения можно?
Запросто:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True    ' отменяем действие
End Sub

Цитата:
не поняла, что можно сделать с BeforeSave
Да что угодно.
Например:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    ' перед каждым сохранением файла выводится сообщение
    MsgBox "Сечас будет произведено сохранение документа"
End Sub
Или вот ещё:
Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    пароль = "123"
    Cancel = True    ' отменяем действие
    msg = "Для сохранения книги необходим пароль"
    ErrMSG = "Введён неверный пароль." & vbNewLine & vbNewLine & "В доступе отказано"

    res = InputBox(msg, "Введите пароль"): If res = "" Then Exit Sub
    If res <> пароль Then MsgBox ErrMSG, vbCritical, "Ошибка": Exit Sub

    ' если код ещё выполняется, значит, введён верный пароль
    Cancel = False    ' разрешаем действие
End Sub
EducatedFool вне форума
Старый 16.12.2008, 16:57   #5
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Код:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Cancel = True    ' отменяем действие
End Sub

А диалоговое окно все равно появляется. Только при нажатии кнопки Да закрыть докумен невозможно.
Bezdar вне форума
Старый 16.12.2008, 17:01   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
А диалоговое окно все равно появляется
В 2003-м Excel точно не появляется.
Видимо, Вы не в тот модуль вставили код.

Его надо вставлять в модуль "Эта книга"
( в главном меню - там где Файл, Правка, ... - есть значок Excel. Щелкаем по нему правой кнопкой, и выбираем пункт Исходный текст. Откроется как раз нужный Вам модуль)
EducatedFool вне форума
Старый 16.12.2008, 17:29   #7
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

У меня XP, и код я вставила куда надо. А диалоговое окно как было, так и есть. Помню, я его как-то убирала, а как убирала, не помню совсем. И времени нет копаться. А задачка у меня такая: нельзя сохранять изменения в документе, если он не сохранен программно (кнопкой). А сохраняется документ под именем, прописанным в определенной ячейке. Если внести изменение в эту ячейку и сохранить документ - будет несоответствие названия документа и названия в этой ячейке (не есть хорошо). Вот и думаю, как заловить юзера.
Bezdar вне форума
Старый 16.12.2008, 17:40   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Если внести изменение в эту ячейку и сохранить документ - будет несоответствие названия документа и названия в этой ячейке (не есть хорошо)
Можно после каждого сохранения документа прописывать в ячейку новое имя файла. Или записывать имя файла в эту ячейку при открытии документа.

Цитата:
нельзя сохранять изменения в документе, если он не сохранен программно (кнопкой)
Это делается очень просто, но для начала надо добиться, чтобы заработал этот макрос (чтобы блокировался вывод диалогового окна сохранения файла).

Если надо лишь исключить возможность сохранения файла под другим именем, то можно в таком случае на время работы с этим файлом блокировать команду меню "Сохранить как..." (блокируя также и клавишу быстрого вызова этой функции)
EducatedFool вне форума
Старый 16.12.2008, 17:50   #9
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Команда меню Сохранить, Сохранить как - блокирована.

Имя файла должно в точности соответствовать названию в ячейке, а не наоборот.
Bezdar вне форума
Старый 17.12.2008, 11:12   #10
Bezdar
Форумчанин
 
Регистрация: 03.06.2008
Сообщений: 213
По умолчанию

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True ' отменяем действие
End Sub

Получилось. Вчера глюк какой-то был.

СПАСИБО!
Bezdar вне форума
Закрытая тема


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нажатие кнопки xakkkkker Работа с сетью в Delphi 1 20.11.2008 01:08
автоматическое нажатие кнопки. sauron99 Помощь студентам 1 29.10.2008 16:36
Отследить нажатие клавиши для отдельного окна Черничный Win Api 12 13.09.2008 20:47
Как отследить нажатие кнопки Обновить из PHP? Timpi PHP 4 11.07.2008 09:16
Отследить нажатие одной кнопки в другом приложении... ActiveX Win Api 4 04.04.2008 23:05