Se puede utiliar sonido al cumplirse una condición?

12/04/2004 - 17:07 por Gerardo Mejicano | Informe spam
Buenos días grupo:

Quisiera saber si es posible que al cumplirse una condición en una celda
determinada, se pueda hacer que Excel de un sonido?

Gracias de antemano,

Gerardo Mejicano

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
13/04/2004 - 10:04 | Informe spam
hola, Gerardo !

... es posible que al cumplirse una condicion en una celda ... Excel de un sonido?



existen varias formas de lograr lo que deseas ;)
- usando los eventos de 'la hoja' [o los del libro] p.e.
el evento '_Change' [cuando 'dicha' celda cambia por 'entrada directa']
el evento '_Calculate' [cuando su resultado cambia por 'efectos de calculo' -en otras celdas-]
'contras': usar los eventos [generalmente] 'destroza' la posibilidad de 'des-hacer' los cambios [inhibe el 'UnDo'] :((
- [aunque hay 'otras varias'...] para todas es necesario hacer 'llamadas' a las API's del Windows MediaManager
y existen [al menos] tres 'sub-secciones' del WMM que se pueden utilizar:
- PlaySound -> 'mas util' cuando 'falla' la busqueda del archivo 'a tocar'
- sndPlaySound -> 'mas util' cuando 'necesitas' que la musica toque 'mientras la macro continua'
- mciExecute -> igual a la anterior, 'acepta' las extensiones 'midi' [como -largos- archivos mp3, midi, etc.]
=> NO TODOS los 'formatos de compresion' estan 'cubiertos' POR TODAS las opciones señaladas :( < [tal parece que todo tiene sus 'pros' y 'contras'] :((
- [creo que...] la forma 'mas versatil' para lo que requieres es...
crear una funcion 'personalizada' [y 'llamarla' como a 'cualquier otra' funcion de hoja de calculo] ;)

con los siguientes 'supuestos' [y con la primera de las opciones: 'PlaySound']:
- A1 es la celda que se va a 'monitorear' [cualquier valor, texto, formula, etc.]
- A2 'tiene' el 'operador de comparacion' [p.e. =, >=, <>, etc.] => si vas a usar la igualdad, ANTEPON un apostrofo >'=< <- A3 contiene el dato 'contra' el cual se hara la 'comparacion'
- C1 es la 'ruta al archivo' que se tocara 'si se cumple' la condicion [p.e. C:\Windows\Media\Reciclaje de Windows XP.wav]
- C2 es la 'ruta al archivo' que se tocara 'si NO se cumple la condicion [p.e. C:\Windows\Media\Ir_end.wav] =>'opcional'<- C3 es la celda donde 'usaras' la funcion 'personalizada' p.e. =AvisarSiCumple(A1,A2,A3,C1,C2)
[o puedes usar 'valores directos' en la funcion, p.e.: =AvisarSiCumple(35,"=",36,C1,C2)

- los 'argumentos' de la funcion son: =AvisarSiCumple(Comparar,Operador,Condición,ArchivoSiCumple,ArchivoSiNoCumple)
- 'segun' el/los archivo/s que especifiques...
si NO 'existe/n'... 'tocara' un sonido 'asincrono' [speakers de la pc]
si SI 'existe/n'...
si 'se puede/n tocar'... se toca/n
si NO 'se puede/n tocar'... ¡ ni modo !!!... no hara 'sonido alguno' ;)

el codigo te lo adjunto en seguida [espero que sea +/- lo que solicitas] ¿comentas?
saludos,
hector.

== en un modulo de codigo 'normal' =Private Const SonidoAsíncrono = &H1
Private Const ArchivoDeSonido = &H20000
Private Declare Function _
Usar_PlaySound _
Lib "winmm.dll" _
Alias "PlaySoundA" ( _
ByVal Archivo As String, _
ByVal Módulo As Long, _
ByVal Bandera As Long) As Long
Function AvisarSiCumple(ByVal Comparar As Variant, _
ByVal Operador As String, _
ByVal Condición As Variant, _
ByVal ArchivoSiCumple As String, _
Optional ByVal ArchivoSiNoCumple As String = "") As String
If Evaluate("""" & Comparar & """" & Operador & """" & Condición & """") Then
Usar_PlaySound ArchivoSiCumple, 0&, SonidoAsíncrono Or ArchivoDeSonido
AvisarSiCumple = "Cumplió !!!"
ElseIf ArchivoSiNoCumple <> "" Then
Usar_PlaySound ArchivoSiNoCumple, 0&, SonidoAsíncrono Or ArchivoDeSonido
AvisarSiCumple = "NO Cumplió !!!"
Else: AvisarSiCumple = "NO Cumplió !!!"
End If
End Function
Respuesta Responder a este mensaje
#2 Gerardo Mejicano
13/04/2004 - 15:45 | Informe spam
Héctor:

Gracias por tu ayuda, quiero comentarte que logre solucionarlo tal y como tu
me lo comentas, lo que hice fue una función en donde comparo los parámetros
y logro que haga un beep y que a través del objeto de Texto a Voz pueda dar
una oración.

Esta es la función:

Function Aviso(dato, a_comparar, tonos, mensaje)

If dato > a_comparar Then
Beep

Dim s As Object
Set s = CreateObject("SAPI.SpVoice")

Dim I
For I = 1 To tonos ' Realiza un bucle 3 veces.
s.Speak mensaje
Next I

Aviso = "Aviso"
Else
Aviso = ""
End If

End Function


"Héctor Miguel" escribió en el mensaje
news:OEW%
hola, Gerardo !

> ... es posible que al cumplirse una condicion en una celda ... Excel de


un sonido?

existen varias formas de lograr lo que deseas ;)
- usando los eventos de 'la hoja' [o los del libro] p.e.
el evento '_Change' [cuando 'dicha' celda cambia por 'entrada directa']
el evento '_Calculate' [cuando su resultado cambia por 'efectos de


calculo' -en otras celdas-]
'contras': usar los eventos [generalmente] 'destroza' la posibilidad de


'des-hacer' los cambios [inhibe el 'UnDo'] :((
- [aunque hay 'otras varias'...] para todas es necesario hacer 'llamadas'


a las API's del Windows MediaManager
y existen [al menos] tres 'sub-secciones' del WMM que se pueden


utilizar:
- PlaySound -> 'mas util' cuando 'falla' la busqueda del archivo


'a tocar'
- sndPlaySound -> 'mas util' cuando 'necesitas' que la musica toque


'mientras la macro continua'
- mciExecute -> igual a la anterior, 'acepta' las extensiones


'midi' [como -largos- archivos mp3, midi, etc.]
=> NO TODOS los 'formatos de compresion' estan 'cubiertos' POR TODAS las


opciones señaladas :( <> [tal parece que todo tiene sus 'pros' y 'contras'] :((
- [creo que...] la forma 'mas versatil' para lo que requieres es...
crear una funcion 'personalizada' [y 'llamarla' como a 'cualquier otra'


funcion de hoja de calculo] ;)

con los siguientes 'supuestos' [y con la primera de las opciones:


'PlaySound']:
- A1 es la celda que se va a 'monitorear' [cualquier valor, texto,


formula, etc.]
- A2 'tiene' el 'operador de comparacion' [p.e. =, >=, <>, etc.] => si vas


a usar la igualdad, ANTEPON un apostrofo >'=< <> - A3 contiene el dato 'contra' el cual se hara la 'comparacion'
- C1 es la 'ruta al archivo' que se tocara 'si se cumple' la condicion


[p.e. C:\Windows\Media\Reciclaje de Windows XP.wav]
- C2 es la 'ruta al archivo' que se tocara 'si NO se cumple la condicion


[p.e. C:\Windows\Media\Ir_end.wav] =>'opcional'<> - C3 es la celda donde 'usaras' la funcion 'personalizada' p.e.
=AvisarSiCumple(A1,A2,A3,C1,C2)
[o puedes usar 'valores directos' en la funcion, p.e.:


=AvisarSiCumple(35,"=",36,C1,C2)

- los 'argumentos' de la funcion son:


=AvisarSiCumple(Comparar,Operador,Condición,ArchivoSiCumple,ArchivoSiNoCumpl
e)
- 'segun' el/los archivo/s que especifiques...
si NO 'existe/n'... 'tocara' un sonido 'asincrono' [speakers de la pc]
si SI 'existe/n'...
si 'se puede/n tocar'... se toca/n
si NO 'se puede/n tocar'... ¡ ni modo !!!... no hara 'sonido alguno'


;)

el codigo te lo adjunto en seguida [espero que sea +/- lo que


solicitas] ¿comentas?
saludos,
hector.

== en un modulo de codigo 'normal' => Private Const SonidoAsíncrono = &H1
Private Const ArchivoDeSonido = &H20000
Private Declare Function _
Usar_PlaySound _
Lib "winmm.dll" _
Alias "PlaySoundA" ( _
ByVal Archivo As String, _
ByVal Módulo As Long, _
ByVal Bandera As Long) As Long
Function AvisarSiCumple(ByVal Comparar As Variant, _
ByVal Operador As String, _
ByVal Condición As Variant, _
ByVal ArchivoSiCumple As String, _
Optional ByVal ArchivoSiNoCumple As String = "") As String
If Evaluate("""" & Comparar & """" & Operador & """" & Condición & """")


Then
Usar_PlaySound ArchivoSiCumple, 0&, SonidoAsíncrono Or ArchivoDeSonido
AvisarSiCumple = "Cumplió !!!"
ElseIf ArchivoSiNoCumple <> "" Then
Usar_PlaySound ArchivoSiNoCumple, 0&, SonidoAsíncrono Or


ArchivoDeSonido
AvisarSiCumple = "NO Cumplió !!!"
Else: AvisarSiCumple = "NO Cumplió !!!"
End If
End Function


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida