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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2009, 22:25   #1
Eugenio
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 15
По умолчанию Звуковой сигнал

Доброго времени суток,
помогите, пожалуйста, написать макрос:
есть изменяющаяся ячейка, данные в нее поступают извне,
нужно, когда значение будет например больше пяти подать звуковой сигнал.
Как это сделать?
Eugenio вне форума Ответить с цитированием
Старый 17.03.2009, 22:37   #2
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Eugenio Посмотреть сообщение
Как это сделать?
Вот с книги
......использовать следующую функцию API и задать корректный путь к звуковому файлу:
Код:
Public Declare Function PlayWavSound Lib "winmm.dll" _ 
Alias "sndPlaySoundA" (ByVal LpszSoundName As String, _
ByVal uFlags As Long) As Long

Public Sub PlaySoundO
Dim SoundName As String
SoundName = "C:\WinNT\Media\Chimes.wav"
PlayWavSound SoundName,  0
End Sub

Последний раз редактировалось valerij; 17.03.2009 в 22:39.
valerij вне форума Ответить с цитированием
Старый 17.03.2009, 22:39   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Вот весь код:
Код:
Private Sub Worksheet_Calculate()
    If [a1] > 5 Then Beep 440, 500
End Sub
Для формирования звука через встроенный динамик компа присутствует дополнительный модуль с кодом:
Код:
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Пример во вложении:
Вложения
Тип файла: rar Звук при изменении значения в ячейке.rar (9.1 Кб, 292 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 17.03.2009, 23:08   #4
IFRSoff
Заблокирован
 
Регистрация: 23.02.2009
Сообщений: 306
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Вот весь код:
Код:
Private Sub Worksheet_Calculate()
    If [a1] > 5 Then Beep 440, 500
End Sub
Для формирования звука через встроенный динамик компа присутствует дополнительный модуль с кодом:
Код:
Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
Пример во вложении:
Супер! Надо взять на заметку
IFRSoff вне форума Ответить с цитированием
Старый 18.03.2009, 02:05   #5
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Вот весь код
Игорь, нет музона у меня, что твой код, что книжный(нет, книжный заработал, путь был не правильный), в чем причина?

Последний раз редактировалось valerij; 18.03.2009 в 02:50.
valerij вне форума Ответить с цитированием
Старый 18.03.2009, 09:08   #6
mchip
Форумчанин
 
Регистрация: 24.06.2008
Сообщений: 516
По умолчанию

На некоторых компьютерах (материнских платах) отсутсвуют системные динамики. Когда компьютер загружается он пищит или нет, а при входе в (выходе) из БИОС? Если нет, то возможно просто нет системного динамика. Тогда код правильный просто играть нечему...
Можно сделать все! Было бы время, да деньги...
mchip вне форума Ответить с цитированием
Старый 18.03.2009, 11:16   #7
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от mchip Посмотреть сообщение
Тогда код правильный просто играть нечему...
В ХР играет, а в висте нет!
valerij вне форума Ответить с цитированием
Старый 18.03.2009, 11:29   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,858
По умолчанию

Цитата:
В ХР играет, а в висте нет!
Скорее всего, причина в настройках безопасности Vista...

Раньше (в Windows98/Me) работала встроенная в VBA функция Beep

В WinXP эта функция оказалась на 3-м Ring-е OC (все низкоуровневые функции упрятали подальше от пользователей), и, соответственно, без использования API-функции Beep уже не обойтись.

Возможно, в Висте её упрятали ещё глубже, или же система безопасности Висты просто не позволяет приложению Excel вызвать эту функцию.

Для проверки надо заменить код Beep 440,500 на код msgbox Beep (440,500)
и посмотреть, какое значение возвратит эта функция.

Цитата:
Можно использовать API-функцию Beep. Beep генерирует простые звуки на динамике компьютера. Функция синхронная; она не возвращает управления до тех пор, пока звук не прекратится. Объявление: BOOL Beep (DWORD dwFreq, // частота звука в герцах DWORD dwDuration // продолжительность звука в миллисекундах ); dwFreq – определяет частоту звука в герцах. Значение параметра должно лежать в диапазоне от 37 до 32,767 (0x25 до 0x7FFF). В случае успеха возвращается ненулевое значение. В случае неудачи возвращается нуль. Для получения дополнительной информации об ошибке вызовите функцию GetLastError
EducatedFool вне форума Ответить с цитированием
Старый 18.03.2009, 15:48   #9
Eugenio
Пользователь
 
Регистрация: 17.03.2009
Сообщений: 15
По умолчанию

Спасибо, все получилось!
Eugenio вне форума Ответить с цитированием
Старый 18.03.2009, 17:24   #10
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Для проверки надо заменить код Beep 440,500 на код msgbox Beep (440,500)
и посмотреть, какое значение возвратит эта функция.
При запуске этого кода, ноль
Код:
Sub beepNew(): msgbox Beep (440,500) ' Beep 440, 500: End Sub
End Sub
valerij вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Звуковой драйвер Валёк Помощь студентам 11 29.11.2008 21:45
До проги не доходит сигнал выгрузки операционной системы Altera Общие вопросы Delphi 6 30.08.2008 18:03
Звуковой файл Михаил Юрьевич Общие вопросы Delphi 13 07.07.2008 11:14
сигнал WindowsBeep ben95 Общие вопросы Delphi 8 13.05.2008 19:12