Reproducir sonidos en una hoja de cálculo de OpenOffice Calc
Cómo hacer para que se reproduzca un sonido desde una hoja de cálculo de OpenOffice (o LibreOffice) Calc ya no es un secreto.
Y no lo es a raíz de una pregunta del usuario JCarlosH, maestro de primaria, que deseaba utilizar este truco para personalizar dictados interactivos y trabajar aspectos concretos de la ortografía y expresión escrita a distintos niveles con sus alumnos en el aula.
Creando las macros
Primero deberás implementar estas macros en tu hoja de cálculo.
Option Explicit
Global oPlay As Object
Global lPlayIniciado As Boolean
Sub Reproducir_Sonido()
If Not lPlayIniciado Then oPlayInicia
oPlay.start()
End Sub
Sub Detener_Sonido()
oPlay.Stop()
End Sub
Sub oPlayInicia()
Dim sSonido As String
Dim oManager As Object
sSonido = ConvertToURL("C:\audio.mp3") 'ruta y nombre del archivo de sonido a reproducir
If GetGUIType() = 1 Then ' si es un sistema operativo Windows
oManager = CreateUNOService("com.sun.star.media.Manager_DirectX")
Else ' si es otro
oManager = CreateUNOService("com.sun.star.media.Manager_GStreamer")
End If
oPlay = oManager.createPLayer(sSonido)
lPlayIniciado = True
End Sub
Controlar el sonido mediante botones
Ya has hecho lo más difícil. Ahora, tan sólo tendrás que añadir dos botones de comando a tu hoja. Uno, para activar el sonido, al que asignarás la macro Reproducir_sonido, y otro, que detendrá el sonido, y al que asignarás la macro Detener_Sonido.
Para agregar fácilmente esos dos botones de comando.
- Haz visible la barra de herramientas Campos de control de formulario desde el menú Ver > Barras de herramientas...
- Inserta un botón seleccionando la herramienta Botón y trazando un rectángulo sobre tu hoja de cálculo.
- Desde la barra de herramientas, estando el botón seleccionado, activa la opción Control
- Cambia desde la pestaña General el título del botón por Iniciar Sonido
- Desde la pestaña Acontecimientos asigna a Botón del ratón soltado la macro Reproducir_sonido.
- Del mismo modo, crea otro botón para detener el sonido.
- Desactiva el Modo Diseño y la opción Control desde la barra de herramientas y prueba tus botones.
Por supuesto, suponemos que en el código has reemplazado "C:\audio.mp3" por la ruta y el nombre del archivo de sonido en formato mp3 que deseas reproducir. También se pueden reproducir otros formatos de sonido, como oog, wab, etc., dependiendo de tu sistema operativo.
Reproducir el sonido al activar la hoja de cálculo
Pero quizás prefieras que el sonido se reproduzca al entrar en una determinada hoja, y se detenga al salir de ésta.
- Haz clic en la pestaña Hoja2, y desde el menú contextual de la pestaña, selecciona Eventos de la hoja...
- Al evento Activar documento, asígnale la macro Reproducir_sonido.
- Al evento Desactivando documento asígnale la macro Detener_sonido.
Haz tus pruebas, y nos comentas los resultados
Gestión más avanzada de los sonidos
Para los más avanzados, algo más de código:
Sub Reinicia_Sonido()
oPlay.setMediaTime(0.0)
End Sub
Sub Repetir_Sonido( lRepetir As Boolean )
' false => no repetir cuando termine true => repetir cuando termine
oPlay.setPlayBackLoop( lRepetir )
End Sub
Sub Velocidad_Sonido( nVelocidad as integer )
' si se cambia la velocidad se reinicia el sonido
if nVelocidad < 1 then
nVelocidad = 1
elseif nVelocidad > 226 then
nVelocidad = 226
endif
oPlay.setRate( nVelocidad/100 ) ' 50, 150, etc. 100 es el modo normal
end sub
Fuentes: Este truco está basado en el código macro facilitado por Mauricio, moderador del Foro español de Apache OpenOffice en este tema y el de éste otro tema del foro inglés.
En el enlace al foro español puedes descargar un documento de ejemplo de Calc.
2 comentarios
Hola, me parece muy interesnate tu aporte, solo que tengo varias dudas, quiero realizar el Segundo punto, es dedcir que se reproduzca la musica al abrir la hoja y se detenga al salir de ella, pero no entiendo como hacerlo es decir donde hago click para colocar las macros?, si fuera amable de mostrarme, muchas gracias!
Hola Itzayana
Haciendo clic secundario sobre la pestaña de la hoja, selecciona Eventos de la hoja...
Utiiza los eventos Activar documento y Desactivando documento para asignar las macros que activan o desactivan la reproducción musical.
Saludos :)