Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Связь VBA(Excel) и MsgBox (Win32 API).

25K
27 февраля 2007 года
n!x
5 / / 27.02.2007
Задача такая:
Надо узнать какую кнопку нажал пользователь в диалоговом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не через MsgBox, а вызывает сам Excel.
Помогите, пожалуйста.
263
27 февраля 2007 года
koltaviy
816 / / 16.12.2004
Цитата: n!x
Задача такая:
Надо узнать какую кнопку нажал пользователь в диалоговом окне Excel.
К примеру, пользователь пытается скопировать файл, но он уже существует. Естественно, Excel пишет, что есть такой файл. Перезаписать?
Да Нет Отмена
Надо узнать, что нажал пользователь. Да, Нет или Отмена.
Причём диалоговое окно вызывается не через MsgBox, а вызывает сам Excel.
Помогите, пожалуйста.


Чо-то я недопонял - какой файл пользователь пытается скопировать, что Excel сам выдает ему такой msg? Поподробнее, пожалуйста, объясни свои действия!!
Если ты имеешь ввиду, что пользователь в проводнике пытается скопировать *.xls файл и система выдает ему такой msg, то тебе в WinAPI!!

25K
27 февраля 2007 года
n!x
5 / / 27.02.2007
Скорей всего туда и надо. Ещё и тему назвал не так...блин..Срочно просто надо. :(
Попробую поподробнее!
Запускаем Excel
Не трогаем макросы и VBA
Excel может выдать ошибки:
Что существует такой же файл (при копировании)
Что открыть не может файл, т.к. такого нет
Ну и всякие другие...
Ошибки появляются, естественно, в окнах. В них есть кнопки (в зависимости от ошибки).
"ОК", "Да", "Нет", "Отмена".
Написать код/программу на VBA, которая бы показала, какая кнопка была нажата пользователем. Тоесть, что он кликнул.
Если бы надо было узнать, что нажал пользователь в MsgBox, который мы сами создаём - то это легко...А вот в данной ситуации, когда создаёт это окно Excel, как поступить?

Вроде доступно :)
25K
01 марта 2007 года
n!x
5 / / 27.02.2007
Неужели никто не знает?
6.4K
02 марта 2007 года
Host
122 / / 22.09.2005
Цитата: n!x

...Excel может выдать [COLOR=red]ошибки[/COLOR]:
Что существует такой же файл (при копировании)
Что открыть не может файл, т.к. такого нет
Ну и всякие другие...


В твоем вопросе уже есть ответ. Если могут быть ощибки, их надо обработать. Для этого существуют стандартнве обработчики.

Цитата: n!x

Написать код/программу на VBA, которая бы показала, какая кнопка была нажата пользователем. Тоесть, что он кликнул.
Если бы надо было узнать, что нажал пользователь в MsgBox, который мы сами создаём - то это легко...А вот в данной ситуации, когда создаёт это окно Excel, как поступить?


Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim NewWorkbook As Workbook
    On Error GoTo ErrorHandler
'пытаемся открыть не существующий файл
    NewWorkbook = Application.Workbooks.Open("C:\ex.xls")
    'Если ощибки нет - что-то делаем
 
ErrorHandler:
'Если возникла ошибка - создаем сообщение и смотрим, что нажал пользователь
   If MsgBox(Err.Description & vbCrLf & vbCrLf & "Продолжить?", vbYesNo) = vbYes Then
        MsgBox "Нажал YES"
   Else
        MsgBox "Нажал NO"
   End If
End Sub
263
02 марта 2007 года
koltaviy
816 / / 16.12.2004
To Host:
Цитата:

..
Не трогаем макросы и VBA
..


Читай внимательно вопрос перед тем, как на него отвечать.
Находясь на листе Excel, зайди в пункт меню 'Файл->Сохранить как...' - вот это рассматриваемая ситуация..

25K
02 марта 2007 года
n!x
5 / / 27.02.2007
Host, ты, наверное, не правильно понял...
Выдаётся даже не ошибка, а уведомление, при перезаписи, к примеру:
"Существует такой же файл. Перезаписать?"
Надо в этом окне определить, какая кнопка нажата...

Помоги, плз...
А про обработку не понял...
Ты определил какая кнопка нажата в MsgBox?
Может я неправильно, что-то объяснил?
Ещё раз объясню:
Нужен код/программа на VBA (Редактор макросов в Excel), которая могла бы определить (не важно как (написать в ячейке, вывести в диалоговом окне через MsgBox и т.п.)) какая кнопка нажата в окне, которое вызывает Excel (перезапись, удаление, открытие и т.п.)
25K
05 марта 2007 года
n!x
5 / / 27.02.2007
Ну? Тут же есть умные люди...
Host!! Кто ещё? :(
313
05 марта 2007 года
insane88
440 / / 13.12.2006
Ты собираешься проверять нажатия кнопок в стандартном диалоговом окне. Это окно, само по себе, имеет небольшое отношение к Basic'у. Иди в Win API, там тебе быстрее помогут.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог