Воспроизведение звука в excel

В Excel мы можем применить условное форматирование для форматирования и выделения ячеек для соответствия условию по мере необходимости, но иногда вы можете захотеть воспроизвести звук, если условие выполнено. Например, если значение ячейки в A1 больше 300, я хочу, чтобы воспроизводился звук. Excel не поддерживает эту функцию, в этой статье я представлю некоторые коды VBA для решения этой задачи.

Воспроизвести звуковой сигнал системы по умолчанию на основе значения ячейки с кодом VBA

Воспроизвести собственный звук на основе значения ячейки с кодом VBA

Воспроизвести звук, если значение ячейки изменяется в определенном столбце с кодом VBA


стрелка синий правый пузырь Воспроизвести звуковой сигнал системы по умолчанию на основе значения ячейки с кодом VBA

Вот удобный код для воспроизведения звукового сигнала системы по умолчанию при выполнении определенного условия, сделайте следующее:

1. Удерживая нажатой ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: воспроизведение звукового сигнала системы по умолчанию на основе значения ячейки:

Function BeepMe() As String
    Beep
    BeepMe = ""
End Function

3. Затем сохраните и закройте это окно кода, вернитесь на рабочий лист и введите эту формулу: = ЕСЛИ (A1> 300, BeepMe (), «») в пустую ячейку рядом с ячейкой, содержащей значение, на основе которого вы хотите воспроизвести звук, а затем нажмите Enter key, в ячейке формулы ничего не будет отображаться, см. снимок экрана:

doc воспроизвести звук, если условие истинно 1

4. И теперь, если введенное значение в ячейке A1 больше 300, будет воспроизводиться системный звуковой сигнал по умолчанию.


стрелка синий правый пузырь Воспроизвести собственный звук на основе значения ячейки с кодом VBA

Если вы хотите воспроизвести какой-либо другой звук, кроме звукового сигнала системы по умолчанию, здесь также код VBA может оказать вам услугу.

1. Удерживайте ALT + F11 ключи, затем он открывает Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модулии вставьте следующий код в Модули Окно.

Код VBA: воспроизведение определенного звука на основе значения ячейки:

#If Win64 Then
    Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As LongPtr, ByVal dwFlags As Long) As Boolean
#Else
    Private Declare Function PlaySound Lib "winmm.dll" _
        Alias "PlaySoundA" (ByVal lpszName As String, _
        ByVal hModule As Long, ByVal dwFlags As Long) As Boolean
#End If
Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000
Function SoundMe() As String
'Updateby Extendoffice 20161223
    Call PlaySound("c:windowsmediaSpeech On.wav", _
      0, SND_ASYNC Or SND_FILENAME)
    SoundMe = ""
End Function

3. Затем сохраните и закройте это окно кода, вернитесь на рабочий лист и введите эту формулу: = ЕСЛИ (A1> 300, SoundMe (), «»)в пустую ячейку рядом с ячейкой, содержащей значение, на основе которого вы хотите воспроизвести звук, а затем нажмите Enter key, в ячейке формулы ничего не будет отображаться, см. снимок экрана:

doc воспроизвести звук, если условие истинно 2

4. С этого момента, если в ячейку A300 ввести значение больше 1, сразу будет воспроизводиться определенный звук.

Заметки: В приведенном выше коде вы можете изменить звуковой файл WAV по своему усмотрению из c: windows media Путь файла. Смотрите скриншот:

doc воспроизвести звук, если условие истинно 3


стрелка синий правый пузырь Воспроизвести звук, если значение ячейки изменяется в определенном столбце с кодом VBA

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

1. Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите воспроизводить звук при изменении значения в столбце, затем выберите Просмотреть код из контекстного меню, а в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:

Код VBA: воспроизведение звука при изменении значения ячейки в столбце:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20161223
Dim xCell As Range
On Error Resume Next
If Target.Columns.Count = 1 Then
  If Intersect(Target, Columns(3)) Is Nothing Then
    Exit Sub
  Else
    For Each xCell In Columns(3)
        On Error Resume Next
        If (xCell.Value = Target.Value) And (xCell.Value <> "") Then
          Beep
          Exit For
        End If
     Next
  End If
End If
End Sub

doc воспроизвести звук, если условие истинно 4

Внимание: В приведенном выше коде число 3 в сценарии Колонны (3) — номер столбца, в котором вы хотите воспроизводить звук при изменении значения в этом столбце.

2. А затем сохраните и закройте это окно кода, теперь, если значение ячейки изменится в третьем столбце, будет воспроизводиться системный звуковой сигнал по умолчанию.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Генерация звукового сигнала с заданной частотой и длительностью и простых мелодий в VBA Excel с помощью функции Beep API из набора базовых функций Windows.

Функция Beep из набора базовых функций Windows API предназначена для генерации звукового сигнала заданной тональности и продолжительности. Последовательное размещении в коде VBA Excel нескольких строк с функцией Beep API или вызов ее с помощью цикла позволит проиграть несколько гудков друг за другом и даже составить из них несложную мелодию.

Синтаксис функции Beep API

Beep (FrequencyHz As Long, TimeMs As Long)

  • Beep — имя функции, в дальнейшем мы заменим его на BeepAPI, чтобы не возникало конфликта с одноименным оператором.
  • FrequencyHz — частота звукового сигнала в герцах. Она должна быть в диапазоне от 37 до 32 767.
  • TimeMs — продолжительность сигнала в миллисекундах.

В коде VBA параметры функции Beep API (FrequencyHz, TimeMs) указываются через запятую, но без скобок.

Объявление функции Beep API

Для функции Beep API можно завести отдельный модуль в рабочей книге Excel, где хранить свои гудки и мелодии. Объявляется функция в разделе Declarations модуля VBA следующей строкой:

Private Declare Function Beep Lib "kernel32" (ByVal FrequencyHz As Long, ByVal TimeMs As Long) As Long

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

Поэтому следует дать функции Beep API другое наименование, например, BeepAPI. Тогда код объявления для раздела Declarations модуля VBA Excel будет выглядеть следующим образом:

Private Declare Function BeepAPI Lib "kernel32" Alias "Beep" (ByVal FrequencyHz As Long, ByVal TimeMs As Long) As Long

Примеры звуковых сигналов

Пример 1
Одиночный звуковой сигнал:

Sub Primer1()

  BeepAPI 1700, 500

End Sub

Изменяйте параметры сигнала, наблюдайте за изменением его тональности и продолжительности.

Пример 2
Последовательность звуковых сигналов:

Sub Primer2()

  BeepAPI 1500, 200

  BeepAPI 900, 250

  BeepAPI 2000, 200

  BeepAPI 900, 250

  BeepAPI 1500, 200

  BeepAPI 900, 250

  BeepAPI 2000, 500

  BeepAPI 0, 500 ‘pause

  BeepAPI 2000, 500

End Sub

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

Создание простой мелодии

Теперь давайте напишем простую мелодию для проигрывания ее из кода VBA Excel.

Сначала находим в интернете простые ноты какого-нибудь музыкального произведения, например, танца Ламбада для исполнения одним пальцем:

Первые ноты танца Ламбада

Первые ноты танца Ламбада

Названия нот и октав смотрим по таблице из Википедии, представленной в статье Октавная система:

Названия октав и нот скрипичного ключа

Названия октав и нот скрипичного ключа

В нашем отрывке мелодии из танца Ламбада присутствуют ноты первой и второй октав. Соответствующие им частоты узнаем из таблиц «Первая октава» и «Вторая октава» в статье Октавная система из Википедии. Частоты округляем до целых значений.

Соотношение длительности нот и пауз определяем по таблице из Википедии, представленной в статье Длительность (музыка):

Относительная длительность нот и пауз

Относительная длительность нот и пауз

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

Наш отрывок мелодии состоит из 15 нот. Соответственно, необходимо определить 15 пар параметров: частота-длительность.

Примем длительность целой ноты за 1200 миллисекунд, и исходя из нее рассчитаем продолжительность нот, имеющихся в примере.

Заполняем данными таблицу (номер октавы указан надстрочным шрифтом):

Нота Частота Длительность
Ми¹ 330 300
Ми² 660 450
Ре² 587 150
До² 523 150
Си¹ 494 150
Ля¹ 440 300
Ля¹ 440 150
До² 523 150
Си¹ 494 150
Ля¹ 440 150
Соль¹ 392 150
Ля¹ 440 150
Ми¹ 330 150
Ре¹ 294 150
Ми¹ 330 900

Чтобы сократить код VBA для воспроизведения этой мелодии, присвоим числовые параметры из таблицы массиву. Затем проиграем последовательность сигналов с помощью цикла For…Next.
Пример 3
Воспроизведение простой мелодии с помощью кода VBA Excel:

Sub Primer3()

Dim i As Integer, a() As Variant

a = Array(330, 300, 660, 450, 587, 150, _

523, 150, 494, 150, 440, 300, 440, 150, _

523, 150, 494, 150, 440, 150, 392, 150, _

440, 150, 330, 150, 294, 150, 330, 900)

  For i = 1 To 29 Step 2

    BeepAPI a(i 1), a(i)

  Next i

End Sub

Если разместить этот код в столбик:

BeepAPI 330, 300

BeepAPI 660, 450

BeepAPI 587, 150

‘и так далее,

все будет работать, как и полагается. Хотя код будет более громоздким, зато более наглядным и удобным для редактирования. Для первоначальной настройки воспроизведения простых мелодий из кода VBA Excel рекомендую использовать именно его.

В Excel мы можем применить условное форматирование для форматирования и выделения ячеек для соответствия условию по мере необходимости, но иногда вы можете захотеть воспроизвести звук, если условие выполнено. Например, если значение ячейки в A1 больше 300, я хочу, чтобы воспроизводился звук. Excel не поддерживает эту функцию, в этой статье я представлю некоторые коды VBA для решения этой задачи.

Воспроизведение звукового сигнала системы по умолчанию на основе значения ячейки с кодом VBA

Воспроизвести собственный звук на основе значения ячейки с кодом VBA

Воспроизвести звук, если ячейка изменение значения в определенном столбце с кодом VBA


Содержание

  1. Воспроизвести звуковой сигнал системы по умолчанию на основе значения ячейки с кодом VBA
  2. Воспроизвести собственный звук на основе значения ячейки с кодом VBA
  3. Воспроизвести звук, если значение ячейки изменяется в определенном столбце с кодом VBA

Воспроизвести звуковой сигнал системы по умолчанию на основе значения ячейки с кодом VBA

Вот удобный код для воспроизведения звукового сигнала системы по умолчанию при выполнении определенного условия, пожалуйста, сделайте это:

1. Удерживая ALT + F11 , откроется Окно Microsoft Visual Basic для приложений .

2 . Нажмите Вставить > Module и вставьте следующий код в окно Module .

Код VBA: воспроизведение звукового сигнала системы по умолчанию на основе значения ячейки:

3 . Затем сохраните и закройте это окно кода, вернитесь на рабочий лист и введите следующую формулу: = IF (A1> 300, BeepMe (), “”) в пустую ячейку рядом с ячейкой, содержащей значение, на основе которого вы хотите воспроизвести звук, а затем нажмите клавишу Enter , в ячейке формулы ничего не будет отображаться, см. снимок экрана:

4 . И теперь, если введенное значение в ячейке A1 больше 300, будет воспроизводиться системный звуковой сигнал по умолчанию.


Воспроизвести собственный звук на основе значения ячейки с кодом VBA

Если вы хотите воспроизвести какой-либо другой звук, кроме системы по умолчанию звуковой сигнал, здесь также код VBA может оказать вам услугу.

1 . Удерживая нажатыми клавиши ALT + F11 , откроется окно Microsoft Visual Basic для приложений .

2. Нажмите Вставить > Module и вставьте следующий код в окно Module .

Код VBA: воспроизведение определенного звука на основе значения ячейки:

3 . Затем сохраните и закройте это окно кода, вернитесь на рабочий лист и введите эту формулу: = IF (A1> 300, SoundMe (), “”) в пустую ячейку рядом с ячейкой, содержащей значение, на основе которого вы хотите воспроизвести звук, а затем нажмите клавишу Enter , в ячейке формулы ничего не будет отображаться, см. снимок экрана:

4 . С этого момента, если в ячейку A1 ввести значение больше 300, сразу будет воспроизводиться определенный звук.

Примечания : в приведенном выше коде вы можете изменить звуковой wav-файл по своему усмотрению, указав путь к файлу c: windows media . См. Снимок экрана:


Воспроизвести звук, если значение ячейки изменяется в определенном столбце с кодом VBA

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

1 . Щелкните правой кнопкой мыши вкладку листа, на которой вы хотите воспроизводить звук при изменении значения в столбце, затем выберите Просмотреть код в контекстном меню и в открывшемся Microsoft Visual Basic для приложения скопируйте и вставьте следующий код в пустой модуль:

Код VBA: воспроизведение звука при изменении значения ячейки в столбце:

Примечание : В приведенном выше коде число 3 в скрипте Columns (3) – это номер столбца, в котором вы хотите воспроизводить звук при изменении значения в этом столбце.

2 . А затем сохраните и закройте это окно кода, теперь, если значение ячейки изменится в третьем столбце, будет воспроизводиться системный звуковой сигнал по умолчанию.


Соответствие клавиш клавиатуры компьютера нотам (как на клавиатуре баяна)

Самый простой вариант извлечь звук при помощи макроса VBA:

Shell "Cmd.exe /c echo " & Chr(7), vbHide

Эта команда вводит в консоль символ с кодом 7 (ввод этого символа вызывает звуковой сигнал)
Из спикера компьютера (не из динамиков!) прозвучит короткий однотональный звуковой сигнал.

Если же нужен звук подлиннее — то можно «ввести» в консоль несколько символов Chr(7).
Например, эта строка кода выдаст тройной звуковой сигнал:

Shell "Cmd.exe /c echo " & Chr(7) & Chr(7) & Chr(7), vbHide

Ниже приведён более сложный вариант — с использованием WinAPI (функции Beep).

Вставьте этот код в стандартный модуль:

Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
 
Sub beeps(melody As String, Optional ByVal BeepTime As Integer = 200)
    mr = "qazwsxedcrfvtgbyhnujmik,ol.p;/['"
    For i = 1 To Len(melody)
        DoEvents: nextlen = 1: letter = Mid$(melody, i, 1)
        nota = InStr(1, mr, letter)
        If IsNumeric(letter) And letter > 0 Then
            nextlen = letter: i = i + 1: nota = InStr(1, mr, Mid$(melody, i, 1))
        End If
        If nota > 0 Then
            tone = 220 * (2 ^ ((nota - 1) / 12))
            a = Beep(tone, nextlen * BeepTime)
        Else
            a = Beep(30000, nextlen * BeepTime / 5)
        End If
    Next
End Sub

Ниже создайте дополнительные функции (с заранее заданными наборами звуков):

' воспроизведение звуков высокой и низкой частоты

Sub beepH(): beeps "k", 100: End Sub
 
Sub beepH0(): beeps "k", 30: End Sub
 
Sub BeepH2(): beeps "k,k", 100: End Sub
 
Sub beepL(): Beep 100, 100: End Sub
 
Sub beepL0(): Beep 100, 30: End Sub
 
Sub BeepL2()
    Beep 100, 100
    Beep 104, 100
    Beep 100, 100
    Beep 70, 200
End Sub

Можно воспроизводить целые мелодии:

' примеры использования - воспроизведение простейших мелодий
Sub Play_Molody_1()
    speed = 150
    beeps "5 5 3jnybt tybtftdx2d", speed
    beeps "5 5 3jnybt tybtftdx2d", speed
    beeps "5 5 nnnyc3 ct2j nyc2 ty2btff ftf2t", speed
    beeps "5 5 nnnyc3 ct2j nyc2 ty2btff ftf3 yb2t", speed
End Sub
 
Sub Play_Molody_2()
    speed = 250
    beeps "jny3b3t5 5 jny3y3b 5 5 bynk2m5 bynk2m j2b2 n3y", speed
    beeps "5 5 5 jny3b3t5 5 jny3y3b 5 5 bynk2m5 bynk2m j2b2 y3t", speed
    beeps "5 5 5 ff3y5 yy2yyy2yby2b4t", speed
    beeps "5 5 5 ff2y5 tby tby nj3m", speed
End Sub

Как создавать такие мелодии?
Если вы никогда не изучали нотную грамоту — то будет сложновато.
Если повнимательнее сравнить клавиатуру компьютера и клавиатуру баяна — то можно углядеть похожее расположение клавиш.
За воспроизведение нот отвечают буквы, за паузы — пробелы.
Если перед нотой (буквой) или перед паузой (пробел) поставить цифру, длительность этой ноты (паузы) увеличивается в соответствующее количество раз)

Можете ещё побаловаться этой программкой: http://excelvba.ru/fortepiano

VBA и макросы
31.05.2013 13406

Для того чтобы Excel смог проигрывать ваши MP3-композиции сначала необходимо создать в ячейке гиперссылку, которая будет указывать на MP3-файл. Нажатие на гиперссылку инициирует воспроизведение аудио-файла в MP3 в программе-проигрывателе по умолчанию.

Но есть большая проблема: вы получите по крайней мере один (возможно два) раздражающих сообщений безопасности от Windows. Microsoft в курсе этой проблемы и описала способ как отключить эти сообщения, но это достаточно сложная процедура.

Мы предлагаем вам использовать альтернативный подход с использованием макросов VBA. Созданный макрос предполагает, что ячейка будет содержать полный путь до MP3-файла.

1
2
3
4
5
6
7
8
9
10
11
12
Sub PlayMP3()
   Application.ScreenUpdating = False
   On Error Resume Next
   ActiveSheet.OLEObjects.Add(Filename:=ActiveCell.Text, Link:=True).Select
   If Err.Number <> 0 Then
     Application.ScreenUpdating = True
     MsgBox "Could not play " & ActiveCell.Text
     Exit Sub
   End If
   Selection.Verb
   Selection.Delete
End Sub

Функция PlayMP3 создает OLE-объект, который содержит ссылки на файл в активной ячейке и загружает MP3-файл в программу воспроизведения по умолчанию, затем OLE-объект удаляется. Если активная ячейка содержит нечто иное, чем действительный путь к MP3-файлу, для пользователя выводится сообщение, и ничего не происходит. Это все происходит быстро, и вы никогда не увидите предупреждение системы безопасности от Windows.

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

По теме

Новые публикации

Понравилась статья? Поделить с друзьями:
  • Восклицательный знак на ярлыке excel
  • Восклицательный знак на файле excel
  • Восклицательный знак на иконке excel
  • Восклицательный знак на значке excel
  • Восклицательный знак на документе word что это такое