Reproducir un WAV desde Excel a cierta Hora

07/07/2005 - 18:37 por Lyna | Informe spam
Hola a todos,

Quiero ver si alguien me puede orientar con lo siguiente, necesito que en
una hoja de Excel se ejecute una macro que me reproduzca un sonido WAV a
ciertas horas, y que me permita modificar esas horas, es decir un día puede
reproducirse a la 11:20 y quiza mañana ese mismo wav se reproduzca a las
11:50.

Les agradezco de antemano, a quien me pueda ayudar.

Saludos,

Preguntas similare

Leer las respuestas

#6 Lyna
12/07/2005 - 21:23 | Informe spam
Hola Héctor,

Muchas gracias, hice lo que me indicaste y si ya lo reproduce a la hora que
introduzco en la Hoja1 A1, batallé un poquito con el código por que al
principio me marcaba errores [1004] de ejecución, pero ya salí de eso.

Ahora me surgen + dudas, mencionas en el comentario anterior, que debo usar
matrice, constantes o algo asi, esto supongo yo que porque necesito que se
reproduzca a distintas horas, y no por intervalos de tiempo propiamente.

Pregunta: ¿cómo puedo hacer que dependiendo de la hora sea el archivo que
reproduzca?

Las horas las controlo con un rango A1:A5, y lo va reproduciendo en la hora
que le indico, pero por ejemplo a las 7:20 necesito que se reproduzca el de
Mexicana y alas 8:30 el WAV de aviacsa.

Espero tus comentarios y gracias de antemano


"Héctor Miguel" escribió:

hola, Lyna !

> ... se trata... de hacer una aplicacion en excel... que... sincronice y... por ejemplo
> ... 8:20 reproduzca el WAV del vuelo 750 de Mexicana de Aviacion
> ... 8:45 el vuelo 104 de Aviacsa y asi consecutivamente.
> ... hice lo que me dijiste pero... Al abrir el archivo... no importa la hora... lo reproduce, y cuando termina marca error.
> ... quisiera saber como hacer que hasta que sea la hora indicada lo reproduzca [...]
> Function Reproduce(RutaFichero As String)
> On Error GoTo Err_Play_Click
> Dim Temp As Long
> Temp = mciSendString("close " & Chr(34) & RutaFichero & Chr(34), 0&, 0, 0)
> Temp = mciSendString("open " & Chr(34) & RutaFichero & Chr(34), 0&, 0, 0)
> Temp = mciSendString("play " & Chr(34) & RutaFichero & Chr(34), 0&, 0, 0)
> Exit_Play_Click:
> Exit Function
> Err_Play_Click:
> MsgBox "Aviso Nº " & Err.Number & " desde el programa Voceo" & Chr(13) _
> & Err.Description, vbCritical + vbOKOnly, "Programa Voceo"
> Resume Exit_Play_Click
> End Function
> Private Sub Workbook_Open()
> Application.OnTime TimeValue("18:28:00"), Reproduce("C:\sistemas\1-51 pm Prueba WAV.wav")
> End Sub

[me parece que] existen varios 'puntos' [en el codigo que expones] que [tarde o temprano] 'causaran errores' :-(
1) la funcion que usas [mciSendString] en las 'llamadas' a las API's de la aplicacion Windows MediaManager [Lib "winmm.dll"]...
a) [normalmente] se utiliza para 'administrar/manejar/manipular/...' dispositivos de CD/DVD/... [como su bandeja/charola]
b) la cadena que usas [para 'tocar' el archivo wav]... "play " NO tiene soporte 'directo' por la funcion 'mciSendString'
-> para que 'funcione'... REQUIERE de las 2 instrucciones previas ['close' y 'open']
-> efecto IGUAL al que logras con una sola instruccion PERO usando la funcion 'sndPlaySound' en lugar de 'mciSendString'
-> revisar los ejemplos y notas del mensaje anterior, 'concretamente'... la nota 'a)' en el 'inciso 2' :))
2) la situacion que comentas de que 'sin importar la hora'... al abrirse el fichero 'se toca' el archivo wav... se debe a lo siguiente...
a) el metodo 'OnTime' REQUIERE que su segundo argumento [macro_a_ejecutar] sea una cadena de texto <= OJO
b) al abrirse el archivo [de excel]... vba 'corre' una 'auto-depuracion' [por si las moscas] y 'detecta' [como error] la falta de la cadena :-(
c) [de todas formas]... 'trata de continuar'... y [por consiguiente] 'ejecuta' la llamada a la funcion [Reproduce] ->por eso SI 'toca'<- :))
d) [por lo anterior]... el metodo 'OnTime' NO 'tuvo la oportunidad'... de ser 'programado' [por vba_excel] en el evento open del libro :-(

[en resumen]...
1) para que 'funcione la programacion' de eventos con el metodo 'OnTime'...
-> su segundo argumento [macro_a_ejecutar] necesita ser una cadena de texto
2) si requieres de un procedimiento que [a su vez] 'tome/reciba' argumentos 'adicionales' [al 'solo' nombre de la macro]...
-> para que puedas usarlo con el metodo 'OnTime' [que requiere la macro como una cadena de texto]...
-> sera necesario encontrar una 'mejor manera' de 'pasar' varios eventos/horas/archivos _wav/... como 'argumentos' del 'OnTime' ;)
[p.e.] usar matrices... constantes... celdas/rangos en alguna hoja... etc. etc. etc.

si cualquier duda [o informacion adicional]... comentas?
saludos,
hector.



Respuesta Responder a este mensaje
#7 Héctor Miguel
13/07/2005 - 05:52 | Informe spam
hola, Lyna !

... usar matrices, constantes o algo asi... porque necesito que se reproduzca a distintas horas
... hacer que dependiendo de la hora sea el archivo que reproduzca?
Las horas las controlo con un rango A1:A5 [...]



1) el ejemplo que te expongo al final 'asume' que en la hoja1 [o la hoja que tengas designada para ello]...
-> en el rango 'A1:A5' estan los tiempos/horas en que se debera 'programar' cada archivo wav
-> en el rango 'B1:B5' estan los nombres de dichos archvos wav [en principio... con todo y ruta]
[lo que deberas tener en cuenta ANTES de la siguiente 'apertura' del libro] :))
2) la macro que ejecuta la aplicacion [mciSendString o... sndPlaySound o... -???-]
-> 'recibe/necesita/se le pasa/... un parametro [o argumento] que le indica el numero de fila [p.e. 1 - 5]
[toma en cuenta que debido a este parametro, la macro YA NO sera 'ejecutable' desde la interfase de usuario] :-(
3) en el evento '_open' del libro, se ejecuta un bucle/ciclo/... tantas veces como 'programaciones' sean necesarias ;)
-> observa que para poder usar macros CON parametros en el metodo OnTime [que requiere cadenas de texto]...
el nombre del procedimiento Y su parametro se 'enlazan' con varias comillas dobles y se delimita por apostrofos
[no seran 'perceptibles' a simple vista... pero... 'ahi estan'] :D

si cualquier duda... comentas?
saludos,
hector.
en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_Open()
Dim Fila As Byte
With Worksheets("Hoja1")
For Fila = 1 To 3
Application.OnTime .Range("a" & Fila), "'WAVs_programados """ & Fila & """'"
Next
End With
End Sub
la macro ['WAVs_programados CON parametro] en un modulo de codigo 'normal' ==Sub WAVs_programados(ByVal Fila As Byte)
Dim EsteArchivo As String
EsteArchivo = Worksheets("Hoja1").Range("b" & Fila)
' a partir de esta linea usa procedimiento que mejor te haya parecido [mciSendString/sndPlaySound/-???-]
End Sub
Respuesta Responder a este mensaje
#8 Lyna
13/07/2005 - 17:09 | Informe spam
Hola Héctor Miguel,

Te agradezco MIL toda tu valiosa asesoría.

¿Tienes alguna página WEB para visitar tu sitio?

Y una vez mas gracias.

Saludos

Lyna
Lyna
Respuesta Responder a este mensaje
#9 Héctor Miguel
14/07/2005 - 03:30 | Informe spam
hola, Lyna !

... agradezco... tu... asesoria.
¿Tienes alguna pagina WEB para visitar tu sitio?



[primero]... te agradezco el 'feed-back' ;)
con relacion a alguna pagina 'personal'... es uno de los proyectos que tengo 'en mente' :))
no lo he considerado 'muy en serio'... porque hay bastantes paginas [mas que]... excel-entes :D

saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida