Attivare suono



  • Attivare suono
    di Michele (utente non iscritto) data: 03/07/2013 22:36:44

    Buonasera. Come si può fare questa cosa: quando una cella ad esempio G1 supera il valore 100 si attiva un suono, magari quello predefinito di excel oppure inserendo un file audio. Grazie



  • di Vecchio Frac data: 04/07/2013 09:01:59

    Le note sonore sono state eliminate da Excel da tanto tempo.
    Al suo posto si può ricorrere ad un'API, sndPlaySound.
    Allego il codice necessario (in un modulo nuovo; la sub TestPlay ovviamente è solo di test e puoi metterla nel foglio in cui devi controlalre la cella).
    La Sub PlayWavSound mostra altre potenzialità dell'API sndPlaySound.
     
    ‘in un modulo
    Public Declare Function sndPlaySound Lib "winmm.dll" _
    Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
    ByVal uFlags As Long) As Long
    
    
    'nel codice del foglio1
    Option Explicit
    
    Private Sub Worksheet_Change(ByVal Target As Range)
        If [G1] > 100 Then PlayWavFile "c:windowsmedia
    ingin.wav", False
    End Sub
    
    
    'un altro esempio di utilizzo:
    Sub PlayWavFile(WavFileName As String, Wait As Boolean)
        If Dir(WavFileName) = "" Then Exit Sub    ' nessun file da riprodurre, esce
        If Wait Then      ' sincrono: riproduce il suono per intero prima di continuare
            sndPlaySound WavFileName, False
        Else    ' asincrono: riproduce il suono indipendentemente dall'esecuzione del resto del codice
            sndPlaySound WavFileName, True
        End If
    End Sub






  • di Michele (utente non iscritto) data: 04/07/2013 18:56:41

    Le note sonore intendi un file audio personale? Che suoni si possono inserire? Un file allegato come esempio è possibile?



  • di Vecchio Frac data: 04/07/2013 20:50:14

    Puoi suonare qualsiasi file WAV esterno.
    Le note sonore erano una caratteristica dei primi Excel, ma non esiste più questa funzionalità (nel modello ad oggetti di Excel è rimasto il residuato bellico di queste vecchie proprietà, ma sono state disabilitate).
    I file WAV di sistema li trovi in C:WINDOWSMedia.





  • di Michele (utente non iscritto) data: 05/07/2013 20:13:52

    Ho inserito il tuo codice ma non va, cos'ho sbagliato? Allego il file.



  • di Vecchio Frac data: 05/07/2013 20:16:28

    "Non va" è troppo generico :)
    Se non trova il file è perchè non hai un file "ringin.wav" nella cartella "c:windowsmedia".





  • di Michele (utente non iscritto) data: 05/07/2013 21:08:28

    Ho modificato il ringin.wav con un file presente nel mio pc ma non va lo stesso. Lo puoi vedere nel file allegato.



  • di Vecchio Frac data: 05/07/2013 21:49:22

    Ho verificato e hai ragione tu... il file non viene riprodotto se il parametro dell'istruzione nell'evento Change del foglio è False, bisogna impostarlo a True.
    Molto strano però (sul XP dell'ufficio funziona perfettamente, sul mio Seven a casa invece riscontro questa anomalia).
     
    If [G1] > 100 Then PlayWavFile "c:windowsmedia	ada.wav", True






  • di HarryBosch data: 05/07/2013 23:26:44

    Come al solito Grande VecchioFrac! Ecco cos'era...
    Tra l'altro vorrei integrare l'argomento facendo presente che con le nuove versioni Office a 64 bit (possibili a partire da Excel 2010) ci sono differenze sostanziali per la manipolazione delle API, il che potrebbe comportare problemi di compatibilità nell'esecuzione delle macro. Ci sto sbattendo il naso da un pò di tempo ^_^

    Per esempio tutte le Declare Function devono essere aggiornate utilizzando l'attributo PrsSafe. Da rilevare che:
    i Controlli ActiveX e componenti aggiuntivi di terze parti creati con la versione a 32 bit non funzioneranno sulla versione a 64 bit.

    Queste e maggiori informazioni, si possono trovare sui link del supporto Microsoft; ve ne giro un paio interessanti:
    h t t p ://office.microsoft.com/it-it/excel-help/scelta-della-versione-a-32-bit-o-a-64-bit-di-microsoft-office-HA010369476.aspx

    h t t p ://msdn.microsoft.com/en-us/library/office/gg264421.aspx

    La dichiarazione da inserire nel modulo, che ha illustrato VecchioFrac andrebbe sostituita in questo modo:


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



  • di Michele (utente non iscritto) data: 07/07/2013 16:43:21

    Ok, ora va. Grazie di cuore