Voici un code pour Calc mais facilement transposable pour Writer, Draw ou Impress (variante pour la propriété "Drawpage") permettant de jouer un fichier son incorporé. L'avantage est que le classeur Calc est autonome : pas besoin de lui adjoindre le fichier son à jouer.
Remarque : j'ai récupéré une partir du code ici : https://forum.openoffice.org/en/forum/v ... 20&t=57699 (merci à leurs auteurs).
Code : Tout sélectionner
REM ***** BASIC *****
Sub SonErreur
'Macro qui joue le fichier son incorporé dans la feuille "Son"
maFeuille=thisComponent.Sheets.getByName("Son")
maPage=maFeuille.DrawPage(0)
'urlFichierSonIncorpore=maPage(0).MediaURL
urlFichierSonIncorpore=maPage(0).PrivateTempFileURL
PlaySound(urlFichierSonIncorpore)
End Sub
Sub PlaySound(i_soundpath as string)
'Macro qui permet de jouer un fichier son
' Source : https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=57699
Dim oPlayer1 as object, sUrlSound as string, oSounMgr as object
If Not isnull(oSounMgr) Then
S_Start_New
Exit Sub
EndIf
sUrlSound = ConvertToUrl(i_soundpath)
If not fileexists(sUrlSound) Then
msgbox sUrlSound & " introuvable",16
else
If GetGuiType() = 1 Then
oSounMgr = CreateUnoService("com.sun.star.media.Manager_DirectX")
Else
oSounMgr = CreateUnoService("com.sun.star.comp.media.Manager_GStreamer")
End If
If IsNull(oSounMgr) Then
msgbox "Sound Mgr not set",16
else
oPlayer1 = oSounMgr.createPlayer(sUrlSound)
oPlayer1.setMediaTime(0.0)
oPlayer1.setVolumeDB(-10)
' msgbox oPlayer1.getduration()
oPlayer1.setPlayBackLoop( 0 )
oPlayer1.start(0)
while oPlayer1.isplaying()
doevents
wend
oPlayer1 = nothing
oSounMgr = nothing
msgbox "Erreur : saisie non autorisée !",16
End If
End If
End Sub
Thierry