Как воспроизвести волновой файл или звуковой файл, используя VBA - PullRequest
8 голосов
/ 25 февраля 2012

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

1 Ответ

12 голосов
/ 25 февраля 2012

Вот способ для файлов WAV.Поместите ** этот код ** в модуль обычного кода:

Option Explicit
Public Declare Function sndPlaySound32 _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
        ByVal lpszSoundName As String, _
        ByVal uFlags As Long) As Long

Sub PlayTheSound(ByVal WhatSound As String)
    If Dir(WhatSound, vbNormal) = "" Then
        ' WhatSound is not a file. Get the file named by
        ' WhatSound from the Windows\Media directory.
        WhatSound = Environ("SystemRoot") & "\Media\" & WhatSound
        If InStr(1, WhatSound, ".") = 0 Then
            ' if WhatSound does not have a .wav extension,
            ' add one.
            WhatSound = WhatSound & ".wav"
        End If
        If Dir(WhatSound, vbNormal) = vbNullString Then
            Beep            ' Can't find the file. Do a simple Beep.
            Exit Sub
        End If
    Else
        ' WhatSound is a file. Use it.
    End If

    sndPlaySound32 WhatSound, 0&    ' Finally, play the sound.
End Sub

Теперь вы можете воспроизвести любой wav-файл через любой другой макрос, вызвав эту процедурувыше и вводит любое имя файла, найденное в папке / Media:

Sub PlayIt()
    Select Case Range("A1").Value
        Case "good"
            PlayTheSound "chimes.wav"
        Case "bad"
            PlayTheSound "chord.wav"
        Case "great"
            PlayTheSound "tada.wav"
    End Select
End Sub

Поэкспериментируйте с этим.

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

Список случайных задач с AUDIO Reveal

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...