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:
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 |