Suonare con Excel.   (13/06/03)  -   Aggiornato al 22/08/03

Far emettere suoni ad Excel può essere utile quando si voglia essere avvisati se per esempio in una cella compare un determinato valore, testo, numero o data che sia.

Sembra però che i progettisti di Excel abbiano deciso di fare a meno di suoni. Si legge infatti, nella guida in linea a proposito della proprietà CanPlaySounds : "Questa proprietà non deve essere utilizzata. Le note sonore sono state eliminate da Microsoft Excel." Pare che gli unici suoni gestiti tramite Excel, siano i suoni legati al famoso "Assistente di Office", infatti, sempre nella guida in linea, alla proprietà Sounds, viene riportato il seguente esempio:

"In questo esempio l’Assistente di Office viene visualizzato, animato e messo in grado di riprodurre suoni.":
With Assistant
.Visible = True
.On = True
If Not Sounds Then Sounds = True
.Animation = msoAnimationGreeting
End With

Esiste tuttavia la possibilità di eseguire file .wav, sfruttando una libreria di Sistema, la "winmm.dll". Vediamo come fare:

  • Inseriamo, nella sezione "Generale  -  Dichiarazioni"  di un Modulo la seguente dichiarazione: (è tutta un'istruzione anche se su due righe, se copiate NON dimenticate il trattino basso _)

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

  • Creiamo (nello stesso Modulo) e diamo il nome alla macro che ospiterà il richiamo alla Funzione sndPlaySound32. Come argomento della funzione, dovremo scrivere il percorso completo ed il nome del file .wav da suonare. Ognuno scriverà il proprio, come esempio ho usato C:\Temp ed il nome di in file copiato lì da Windows\Media (la cartella dei suoni di sistema). Potrete usare anche suoni registrati da voi, con la vostra voce, usando l'utility "Registratore di suoni" di Windows. Unico suggerimento: poichè durante l'esecuzione della macro non sarà possibile eseguire nessuna operazione sul foglio di lavoro, consiglio di utilizzare suoni brevi per non bloccare il foglio troppo a lungo.

Sub MioSuono()
Call sndPlaySound32("C:\Temp\ringin.wav", 0)
End Sub

  • Ora sceglieremo un evento per inserire l'istruzione che farà scattare in automatico l'esecuzione del suono se si verificherà una certa condizione: nell'esempio sotto ipotizzo che se nella cella A1 compare la parola "pippo" (attenzione alle maiuscole/minuscole (*)), si attiva il suono tramite il richiamo della macro su esposta (MioSuono):

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1").Value = "pippo" Then
MioSuono
End If
End Sub

Ricordo che per ovviare all'inconveniente delle maiuscole/minuscole, quando si fa uso di "testo" nel codice, possiamo inserire nella sezione "Generale - Dichiarazioni" (del Worksheet in questo caso) l'istruzione:
Option Compare Text

Aggiornamento

Nasce un problema quando si voglia inviare la cartella con il file vaw ad un amico, o spostare il file vaw in una cartella diversa : cambiando il percorso che mira al file vaw,  il file non verrà trovato e quindi niente suono. Ma esiste la possibilità di "incorporare" il file vaw nella cartella in modo che diventi un tutt'uno con il file sonoro. Questa soluzione è stata suggerita da Stefano Luise, e-mail stefano_luise@yahoo.com e questa la sua spiegazione:

Ho trovato questa routine di un certo Tiziano Marmiroli - Microsoft MVP - Office (t.marmiroli@mvps.org) e segnalo il modo per farlo facendo sì che il file sia unico:

Menu Inserisci> Oggetto> Da file
e inserisci il tuo file wav. Prendi nota del nome che Excel gli assegna
(es. "Oggetto 1").

Da Visual Basic Editor:

---------------------------------------------
Private Sub Workbook_Open()
Sheets("Foglio1").Shapes("Oggetto 1").Select
Selection.Verb Verb:=xlPrimary
End Sub

'sostituire a "Oggetto 1" il nome dell'oggetto e
'a "Foglio1" il nome del foglio che lo contiene

---------------------------------------------

All'apertura del foglio parte il suono.

Ciao,

Stefano

Un grazie a Stefano.

Buon lavoro.

prelevato sul sito http://ennius.interfree.it