Condividi:        

INSERIRE SUONO in EXCEL

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

INSERIRE SUONO in EXCEL

Postdi scanacc » 08/03/18 14:23

Carissimi, al comando di una macro vorrei che partisse un suono:

Riesco a farlo con questi comandi
Codice: Seleziona tutto
Option Explicit
Public Declare PtrSafe Function sndPlaySound32 _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
        ByVal lpszSoundName As String, _
        ByVal uFlags As LongLong) As LongLong
 
Sub suona()
sndPlaySound32 "C:\PERCORSO FILE", 0&
End Sub

E' perfetto! Non si apre neppure Windows Media Player e può andar bene così.
Quale è il punto?
La questione è che questo FILE EXCEL dovrebbe poi girare (vorrei darlo ad altri colleghi) ed il percorso dovrebbero cambiarlo manualmente. Allora mi domando: Ma se questo suono lo incorporassi nel FILE creato e poi (attraverso la sopracitata macro) gli facessi capire che il suono da riprodurre si trova nel "Foglio1"? Potrebbe andare? Se SI cosa devo scrivere al posto di "C:\PERCORSO FILE"?
Grazie per l'attenzione
scanacc
Utente Senior
 
Post: 350
Iscritto il: 06/12/15 10:30

Sponsor
 

Re: INSERIRE SUONO in EXCEL

Postdi wallace&gromit » 08/03/18 15:22

Purtroppo, e Anthony mi correggerà se sbaglio, temo che devi scegliere tra due opzioni:
o fai partire media player esterno dandogli come suono uno integrato nel foglio
o integri media player nel tuo foglio e fai partire un suono da file esterno.

Questa seconda soluzione può comunque essere gestita facilmente se fai il riferimento alla cartella attiva e dai istruzioni affinché il file excel ed il suono si trovino sempre nella stessa cartella ed inserisci tutto il percorso completo nell'URL del media player.
Oppure ancora fai una ricerca con il nome del file di suono in tutto il computer.
In ogni caso dando però al file un nome particolare e sicuramente univoco (non musica.mp3 per intenderci) .
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: INSERIRE SUONO in EXCEL

Postdi wallace&gromit » 09/03/18 08:43

Wow, per il momento Anthony non mi ha corretto / bacchettato, poi scartabellando in rete ho trovato una possibilità di integrare il suono con un file SWF e shockwave player. non ho ancora sperimentato.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2180
Iscritto il: 16/01/12 14:21

Re: INSERIRE SUONO in EXCEL

Postdi Anthony47 » 09/03/18 15:37

temo che devi scegliere tra due opzioni:
o fai partire media player esterno dandogli come suono uno integrato nel foglio
o integri media player nel tuo foglio e fai partire un suono da file esterno.

Il realta' la seconda opzione e' prestazionalmente simile a quella che usa oggi.

Comunque queste cose sono piu' prestazioni di sistema che del vba, e' un'area di cui non sono gran conoscitore.
Per quel che e' la mia esperienza:
- sndPlaySound32 puo' eseguire un file wav, che pero' deve esistere sul filesystem locale (disco locale, server di rete)
- invece con il metodo "Verb" si potrebbe eseguire un file audio integrato in excel (per integrarlo: Menu /Inserisci; gruppo Test, Oggetto; tab Crea da file)

La modalita' Verb si appoggia su WindowsMediaPlayer, che ha la tendenza di portarsi in primo piano; con i sistemi operativi di oggi e' abbastanza duro (ma non impossibile) forzarlo in secondo piano o minimizzarlo.
Un esempio lo si trova nel mio "gadget natalizio 2016", vedi viewtopic.php?f=26&t=107965&p=633056&hilit=buone+feste#p633056


Con sndPlaySound32 si potrebbe o usare un file audio distribuito in un pacchetto che comprende anche il file Excel, da installare sul pc degli utenti.
Oppure installare il file audio su un web server e poi farlo scaricare via macro sul pc utente; ovviamente richiede che il pc utente sia collegato a internet.

Se vuoi usare il metodo dell'oggetto integrato in Excel, la parte di codice che ti servira' potrebbe essere
Codice: Seleziona tutto
    Sheets("QualeFoglio").Shapes("QualeOggetto").Select '"QualeFoglio" deve essere gia' selezionato
    Selection.Verb Verb:=xlPrimary

(Vedi Sub builtree in Modulo3 nel gadget natalizio)

Se vuoi invece usare sndPlaySound32 con un file da scaricare da Internet, ti servira' una funzione per scaricare il file; corrisponde al seguente codice:
Codice: Seleziona tutto
#If VBA7 Then
    Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias _
      "URLDownloadToFileA" (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal _
      szFileName As String, ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As Long
    Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
      (ByVal lpszSoundName As String, ByVal uFlags As LongPtr) As Long
#Else
    Declare Function URLDownloadToFile Lib "urlmon" Alias _
      "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
      szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Declare Function sndPlaySound32 Lib "winmm.dll" Alias "sndPlaySoundA" _
      (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
#End If

Function GetWebFile(ByVal myURL, ByVal myPath As String) As Variant
'byAnthony, ritorna File Path & name OPPURE 0 se fail
Dim PathNName As String, URL As String
Dim mySplit, Resp As Long
mySplit = Split(myURL, "/")
PathNName = myPath & mySplit(UBound(mySplit))
Resp = URLDownloadToFile(0, myURL, PathNName, 0, 0)
If Resp = 0 Then
    GetWebFile = PathNName
    Exit Function
Else
    GetWebFile = 0
End If
End Function


La funzione e' la GetWebFile, il resto del codice sono le dichiarazioni necessarie per le librerie contenenti sia il comando sndPlaySound32 (necessaria per la riproduzione) che URLDownloadToFile (necessaria per il download)
Ho visto che hai fatto le dichiarazioni per Excel 64bit, il codice proposto e' bivalente (sia 32 bit che 64); le dichiarazioni, a partire dalla riga #If VBA7 Then, devono stare rigorosamente in testa al modulo, prima di qualsiasi Function o Sub

Potrai poi sfruttare il tutto con un codice simile a questo:
Codice: Seleziona tutto
Dim myFile
myFile = GetWebFile("http://www.astrofili.it/am/felizNav_8kbps.wav", Environ("Temp") & "\")
If myFile <> 0 Then
    sndPlaySound32 myFile, 1  '0 = modo sincrono
Else
    Beep        'impossibile scaricare file
End If


Questa scarica un file audio da http://www.astrofili.it/am/felizNav_8kbps.wav e lo riproduce tramite sndPlaySound32.
Si noti che sndPlaySound32 puo' lavorare in modo sincrono o modo asincrono:
-col secondo parametro pari a 1 l'esecuzione della macro continua dopo aver avviato la riproduzione
-col parametro pari 0 la macro continuera' solo al completamento della riproduzione

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INSERIRE SUONO in EXCEL

Postdi scanacc » 11/03/18 01:01

Grazie mitico!
Vorrei usare il metodo dell'oggetto integrato su excel. Ma il codice che mi hai suggerito
Codice: Seleziona tutto
Sheets("QualeFoglio").Shapes("QualeOggetto").Select '"QualeFoglio" deve essere gia' selezionato
    Selection.Verb Verb:=xlPrimary

dove dovrei inserirlo sul codice che uso?
Codice: Seleziona tutto
Option Explicit
Public Declare PtrSafe Function sndPlaySound32 _
    Lib "winmm.dll" _
    Alias "sndPlaySoundA" ( _
        ByVal lpszSoundName As String, _
        ByVal uFlags As LongLong) As LongLong
 
Sub suona()
sndPlaySound32 "C:\PERCORSO FILE", 0&
End Sub

Grazie Anthony
scanacc
Utente Senior
 
Post: 350
Iscritto il: 06/12/15 10:30

Re: INSERIRE SUONO in EXCEL

Postdi Anthony47 » 11/03/18 01:06

Lo metti al posto di sndPlaySound32 "C:\PERCORSO FILE", 0& all'interno della Sub suona()

La Declare non servira' piu'.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INSERIRE SUONO in EXCEL

Postdi scanacc » 13/03/18 10:19

Allora:
Ho inserito CHIMES.WAV nel foglio1
poi ho fatto la macro
Codice: Seleziona tutto
Sub suona()
Sheets("Foglio1").Shapes("CHIMES.WAV").Select '"QualeFoglio" deve essere gia' selezionato
    Selection.Verb Verb:=xlPrimary
End Sub

Scusa la mia ignoranza ... dove sbaglio?
Mi dice l'elemento corrispondente al nome specificato non è stato trovato
PS
Tra parentesi non capisco cosa vuol dire "QualeFoglio" deve essere gia' selezionato
scanacc
Utente Senior
 
Post: 350
Iscritto il: 06/12/15 10:30

Re: INSERIRE SUONO in EXCEL

Postdi Anthony47 » 13/03/18 14:58

Evidentemente l'oggetto inglobato da excel non si chiama chimes.wav; seleziona l'oggetto e guarda nella "Casella Nome" (quella che in genere si trova poco piu' sopra della cella A1) il suo vero nome.

Le istruzioni devono essere eseguite avendo prima selezionato (reso "attivo") il tuo Foglio1.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INSERIRE SUONO in EXCEL

Postdi scanacc » 14/03/18 16:16

Quando seleziono l'oggetto compare la scritta =INCORPORA("Oggetto Shell Packager");"")

PS
Come faccio a rendere attivo il Foglio1?
scanacc
Utente Senior
 
Post: 350
Iscritto il: 06/12/15 10:30

Re: INSERIRE SUONO in EXCEL

Postdi Anthony47 » 15/03/18 00:19

Devi guardare nella Casella Nome, non nella barra della formula
Immagine

Come faccio a rendere attivo il Foglio1?
Il "foglio attivo" e' quello che guardi; quindi "fai come hai sempre fatto"
Oppure, in vba:
Codice: Seleziona tutto
Sheets("ilNomeDelFoglio").Select

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19431
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: INSERIRE SUONO in EXCEL

Postdi scanacc » 15/03/18 10:11

Perfetto grazie! MI piacerebbe impedire l'apparizione di WMP ma credo di aver capito che sia praticamente impossibile
scanacc
Utente Senior
 
Post: 350
Iscritto il: 06/12/15 10:30


Torna a Applicazioni Office Windows


Topic correlati a "INSERIRE SUONO in EXCEL":


Chi c’è in linea

Visitano il forum: Nessuno e 15 ospiti