Reproducir sonido incrustado en libro.

16/05/2007 - 10:24 por ~ jose ~ | Informe spam
Hola, que tal?.

Tengo un código de Ivan F. Moala para reproducir un archivo wav desde
Excel pero este código reproduce el archivo que está en el disco duro.
Tiene tres macros, una es el play otra es loop reproduce repetidamente
y otra es el stop. Como puedo hacer lo mismo pero sin hacer referencia
a un archivo externo?, me refiero a incrustar el sonido.wav en el
libro Excel.

El código de Moala:

Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" ( _
ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_LOOP = &H8
Private Const strSaveAs As String = "C:\Pruebas\sonido.wav"

Sub PlayBack()
WAVPlay strSaveAs
End Sub

Sub PlayBackLoop()
WAVLoop strSaveAs
End Sub

Sub PlayBackStop()
Call WAVPlay(vbNullString)
End Sub


Sub WAVLoop(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_LOOP
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Sub WAVPlay(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_NODEFAULT
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Gracias y un saludo

Preguntas similare

Leer las respuestas

#1 daniel
16/05/2007 - 18:00 | Informe spam
Hola Jose
no se si te servira de mucho pero prueba
en INSERTAR>objeto>archivo de sonido

un saludo
daniel

"~ jose ~" escribió en el mensaje
news:
Hola, que tal?.

Tengo un código de Ivan F. Moala para reproducir un archivo wav desde
Excel pero este código reproduce el archivo que está en el disco duro.
Tiene tres macros, una es el play otra es loop reproduce repetidamente
y otra es el stop. Como puedo hacer lo mismo pero sin hacer referencia
a un archivo externo?, me refiero a incrustar el sonido.wav en el
libro Excel.

El código de Moala:

Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" ( _
ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_LOOP = &H8
Private Const strSaveAs As String = "C:\Pruebas\sonido.wav"

Sub PlayBack()
WAVPlay strSaveAs
End Sub

Sub PlayBackLoop()
WAVLoop strSaveAs
End Sub

Sub PlayBackStop()
Call WAVPlay(vbNullString)
End Sub


Sub WAVLoop(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_LOOP
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Sub WAVPlay(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_NODEFAULT
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Gracias y un saludo
Respuesta Responder a este mensaje
#2 ~ jose ~
16/05/2007 - 19:00 | Informe spam
On 16 mayo, 18:00, "daniel" wrote:
Hola Jose
no se si te servira de mucho pero prueba
en INSERTAR>objeto>archivo de sonido

un saludo
daniel

"~ jose ~" escribió en el mensajenews:
Hola, que tal?.

Tengo un código de Ivan F. Moala para reproducir un archivo wav desde
Excel pero este código reproduce el archivo que está en el disco duro.
Tiene tres macros, una es el play otra es loop reproduce repetidamente
y otra es el stop. Como puedo hacer lo mismo pero sin hacer referencia
a un archivo externo?, me refiero a incrustar el sonido.wav en el
libro Excel.

El código de Moala:

Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" ( _
ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long

Private Const SND_ASYNC = &H1
Private Const SND_NODEFAULT = &H2
Private Const SND_LOOP = &H8
Private Const strSaveAs As String = "C:\Pruebas\sonido.wav"

Sub PlayBack()
WAVPlay strSaveAs
End Sub

Sub PlayBackLoop()
WAVLoop strSaveAs
End Sub

Sub PlayBackStop()
Call WAVPlay(vbNullString)
End Sub

Sub WAVLoop(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_LOOP
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Sub WAVPlay(File As String)
Dim SoundName As String
Dim wFlags As Long
Dim x As Long

SoundName = File
wFlags = SND_ASYNC Or SND_NODEFAULT
x = sndPlaySound(SoundName, wFlags)
If x = 0 Then MsgBox "Can't play " & File

End Sub

Gracias y un saludo



Hola Daniel, lo que me propones no cumple lo que pido, de esta forma
solo se reproduce una vez. Como explicaba en el mensaje anterior lo
que quiero es una macro para reproducir el archivo de sonido una vez,
otra macro para poder reproducirlo repetidas veces y otra macro para
parar la reprodución cuando quiera.
Espero haberme explicado mejor esta vez ;)

Un saludo
Respuesta Responder a este mensaje
#3 Héctor Miguel
17/05/2007 - 05:50 | Informe spam
hola, chicos !

jose escribio en el mensaje ...
Tengo un codigo de Ivan F. Moala para reproducir un archivo wav desde Excel
pero este codigo reproduce el archivo que esta en el disco duro...
Como puedo hacer lo mismo pero sin hacer referencia a un archivo externo?
me refiero a incrustar el sonido.wav en el libro Excel [...]

daniel escribio en el mensaje ...
no se si te servira de mucho pero prueba en INSERTAR>objeto>archivo de sonido

jose escribio en el mensaje ...
... lo que me propones... solo se reproduce una vez
... quiero... una macro para reproducir el archivo de sonido una vez
otra macro para poder reproducirlo repetidas veces
y otra macro para parar la reprodución cuando quiera...







1) si no quieres usar una referencia al disco duro para 'llamar' a tu archivo de sonido...
necesitaras 'incrustar' el archvo de sonido como 'paquete' en la hoja de calculo
[tal como te sugiere david] ;)

2) una vez incrustado/empaquetado/... el archivo de sonido
excel va a necesitar 'llamar' a la aplicacion instalada que sea la que se 'encarga' de los archivos de sonido
[no podras estar 'seguro' de cual tiene el usuario/pc donde se abra tu archivo: wndows-media-player?... real-player?... ???] :-(

3) asumiendo que la pc donde se abra tu archivo 'toca sonidos'...
a) el usuario 'tendria que' hacer un doble-click sobre el objeto incrustado [lo que lanzara la aplicacion externa asociada]
b) [probablemente] recibira una advertencia de que dicha accion pudiera ejecutar un programa 'potencialmente' inseguro -?-
c) la alternativa via macro para simular el doble-click sobre un objeto incrustado en hojas de excel es +/- como sigue:

Sub Usar_aplicacion_incrustada()
Application.DisplayAlerts = False ' para evitar el mensaje de advertencia '
ActiveSheet.OLEObjects(1).Verb 'Verb:=xlPrimary
Application.DisplayAlerts = True ' para restablecer las alertas de la aplicacion '
End Sub

4) siendo 'externa/ajena/...' al excel la aplicacion encargada de los archivos de sonido...
no estoy muy seguro que puedas'instruirla' para ejecutar 'sus acciones propias' como: detener, repetir, ... -?-
[por lo referente a las 'otras' macros que dices estar buscando] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#4 ~ jose ~
17/05/2007 - 19:55 | Informe spam
On 17 mayo, 05:50, "Héctor Miguel"
wrote:
hola, chicos !

> jose escribio en el mensaje ...
> Tengo un codigo de Ivan F. Moala para reproducir un archivo wav desde Excel
> pero este codigo reproduce el archivo que esta en el disco duro...
> Como puedo hacer lo mismo pero sin hacer referencia a un archivo externo?
> me refiero a incrustar el sonido.wav en el libro Excel [...]
>> daniel escribio en el mensaje ...
>> no se si te servira de mucho pero prueba en INSERTAR>objeto>archivo de sonido
>>> jose escribio en el mensaje ...
>>> ... lo que me propones... solo se reproduce una vez
>>> ... quiero... una macro para reproducir el archivo de sonido una vez
>>> otra macro para poder reproducirlo repetidas veces
>>> y otra macro para parar la reprodución cuando quiera...

1) si no quieres usar una referencia al disco duro para 'llamar' a tu archivo de sonido...
necesitaras 'incrustar' el archvo de sonido como 'paquete' en la hoja de calculo
[tal como te sugiere david] ;)

2) una vez incrustado/empaquetado/... el archivo de sonido
excel va a necesitar 'llamar' a la aplicacion instalada que sea la que se 'encarga' de los archivos de sonido
[no podras estar 'seguro' de cual tiene el usuario/pc donde se abra tu archivo: wndows-media-player?... real-player?... ???] :-(

3) asumiendo que la pc donde se abra tu archivo 'toca sonidos'...
a) el usuario 'tendria que' hacer un doble-click sobre el objeto incrustado [lo que lanzara la aplicacion externa asociada]
b) [probablemente] recibira una advertencia de que dicha accion pudiera ejecutar un programa 'potencialmente' inseguro -?-
c) la alternativa via macro para simular el doble-click sobre un objeto incrustado en hojas de excel es +/- como sigue:

Sub Usar_aplicacion_incrustada()
Application.DisplayAlerts = False ' para evitar el mensaje de advertencia '
ActiveSheet.OLEObjects(1).Verb 'Verb:=xlPrimary
Application.DisplayAlerts = True ' para restablecer las alertas de la aplicacion '
End Sub

4) siendo 'externa/ajena/...' al excel la aplicacion encargada de los archivos de sonido...
no estoy muy seguro que puedas'instruirla' para ejecutar 'sus acciones propias' como: detener, repetir, ... -?-
[por lo referente a las 'otras' macros que dices estar buscando] ;)

saludos,
hector.



Hola, lo que me proponias tú y David ya lo conocia, pero dado que
comentas que crees que no se puede hacer lo que pido, me podrias decir
como exportar un archivo de sonido incrustado en el libro?, así de
esta forma al abrir el llibro se exportaria el archivo de sonido y al
cerrarlo podria eliminarlo. Que te parece la idea?

Venga, gracias y un saludo
jose
Respuesta Responder a este mensaje
#5 Héctor Miguel
19/05/2007 - 06:34 | Informe spam
hola, jose !

... lo que me proponias tu y David ya lo conocia
pero dado que comentas que crees que no se puede hacer lo que pido
me podrias decir como exportar un archivo de sonido incrustado en el libro?
asi de esta forma al abrir el llibro se exportaria el archivo de sonido
y al cerrarlo podria eliminarlo. Que te parece la idea?



1) no he logrado encontrar alguna funcionalidad que permita 'desempaquetar' un objeto incrustado en hojas de calculo :-(
2) [tal parece que] una vez incrustado, solo te queda... o aprovecharlo o... eliminarlo :-(
3) [por cierto] un detalle que -solo- pense en comentar en la propuesta anterior [omitido por olvido]...
es que al incrustar archivos de sonido en tus hojas, el 'peso' del archivo crece 'desproporcionadamente'
[lo que conlleva ademas riesgos de corrupcion del archivo] <= OJO

[prgunta]: no crees que seria mas 'sano' proveer el archivo de sonido en conjunto con tu archivo de excel ?
-> solo tendrias que 'cargarlo' [p.e.] desde el mismo ThisWorkbook.Path ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida