domingo, 15 de diciembre de 2024

90 - Sonidos en Excel

Generalmente utilizamos mensajes creados con la herramienta Validación de datos o alertas de colores para indicar cuando alguna celda toma valores que hay que analizar.
Pero resulta muy interesante activar sonidos, por ejemplo, cuando se ingresan valores por debajo de cierto monto. Incluso podemos contar con más de un tipo de alarmas según la situación.
 
NOTA:   si se cuenta con algún software de grabación de mensajes, guardarlos en formato wav para poder utilizarlo en estos ejemplos.
En este ejemplo opté por enviar mensajes al cambio en ciertas celdas de una hoja.  Por lo tanto necesitaremos programar el evento Change de la hoja, evaluando si los cambios se realizan en las columnas B y C para este ejemplo. Se controla si lo ingresado es un dato del tipo Hora y a partir de la fila 3.
 
Private Sub Worksheet_Change(ByVal Target As Range)
'solo se ejecuta si el cambio es en una sola celda a partir de la fila 3
If Target.Count > 1 Or Target.Row < 3 Then Exit Sub

'se controlan las columnas B y C
If IsDate(Format(Target, "hh:mm")) Then
    If Target.Column = 2 Then
        Call playwav("B")
    ElseIf Target.Column = 3 Then
        Call playwav("C")
    End If
End If
End Sub

Luego, en un módulo, colocaremos la función propiamente dicha que activará esos sonidos.

'En Office de 32 bits quitar la palabra PtrSafe

Private Declare PtrSafe Function playsound Lib "winmm.dll" _

Alias "PlaySoundA" (ByVal lpszname As String, _

ByVal hmodule As Long, ByVal dwflags As Long) As Long

 

Const SND_SYNC = &H0

Const SND_ASYNC = &H1

Const SND_FILENAME = &H20000

 

Sub playwav(letra)

Dim wavfile As String, Ruta As String

'según la columna será el archivo de sonido

If letra = "B" Then

    wavfile = "DESPEGUE.wav"       'ajustar nombre

ElseIf letra = "C" Then

    wavfile = "ATERRIZAJE.wav"       'ajustar nombre

End If

'ruta del libro activo. Ajustar si los audios se ubicarán en otra carpeta

Ruta = ThisWorkbook.Path                

           'asignar el archivo de sonido

wavfile = Ruta & "\" & wavfile 

         'llamar a la función de sonidos

Call playsound(wavfile, 0&, SND_ASYNC Or SND_FILENAME)

End Sub


Ver Video Nº 90 desde aquí.


            Solicitar libro de ejemplo al correo: cibersoft.arg@gmail.com

 

No hay comentarios.:

Publicar un comentario