Lancer une application à partir de Word : émettre des sons (fichier wave)


Sub applaudissements()
appli = Shell("c:\winnt\explorer.exe", vbNormalFocus)
SendKeys "%OT" & "C:\winnt\media\office97\applaud.wav{Enter}", True
SendKeys "%FT{Enter}", True
SendKeys "%FF", True
End Sub

La macro utilise Shell pour ouvrir l'explorateur Windows, puis SendKeys pour lancer le programme.

On peut aussi ouvrir directement le lecteur multimédia par :
appl = Shell("C:\WINNT\SYSTEM32\mplay32.exe", vbNormalFocus)
ou (en ajoutant l'adresse du fichier après celle de l'application) :
Shell "C:\Program Files\windows media player\mplayer2.exe C:\applaud.wav"

On peut aussi utiliser la méthode Run de Windows Scripting Host :
Set scr = CreateObject("WScript.Shell")
scr.Run "mplayer2.exe C:\applaud.wav", 1, True

Ou bien, avec une déclaration Windows API, qui fait référence à la procédure sndPlaySound32 de la dll Winmm,
Declare Function sndPlaySound32 Lib "winmm.dll" Alias _
"sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
 
Sub Au_revoir()
Call sndPlaySound32(ThisWorkbook.Path & "\sayonara.wav",0)
End Sub

 
ou, plus simple, si le fichier son est inséré dans un fichier Excel :
ActiveSheet.OLEObject("pouet").Verb
ou dans Word :
ActiveDocument.Bookmarks("pouet").Range.InlineShapes(1).OLEFormat.DoVerb

Si vous ne disposez pas du fichier "applaud.wav", vous pouvez le télécharger et l'enregistrer sous "C:\winnt\media\office97\applaud.wav" (pour Windows NT)
télécharger applaud.wav


Remarque concernant Shell :
Shell provoque une erreur si le chemin d'accès au fichier contient des espaces. Une solution consiste à utiliser le nom DOS du programme :
La macro suivante, supposée lancer le script truc.vbs contenu dans le dossier de démarrage, ne marche pas :

Set sh = CreateObject("WScript.Shell")
Shell sh.SpecialFolders("StartUp") & "\truc.vbs"


On peut la remplacer par
Set sh = CreateObject("WScript.Shell")
Set fs = CreateObject("Scripting.FileSystemObject")
chemin = sh.SpecialFolders("StartUp") & "\truc.vbs"
Set fich = fs.getfile(chemin)
chemin = fich.shortpath
sh.Run chemin