Windows Media Player - usarlo in una applicazione .xls - prima parte - dal 19/09/04 pagina vista: volte

Se è pur vero che Excel possiede scarsa propensione alla possibilità di "lavorare" con il suono (quindi files suono o musicali), è altrettanto vero che ci consente di inserire "oggetti" esterni nella nostra applicazione (al Workbook).

Uno di questi "oggetti" è appunto il Wmplayer, il programma integrato nel sistema operativo che ci consente di ascoltare musica (wav, midi, Mp3, asf, ecc.) o vedere filmati Avi. Chiaramente dovremo avere installato sul nostro computer i Codec necessari alla riproduzione di alcuni formati (Mp3, Xvid, ecc.), ma i wav, mid, asf, avi, saranno riprodotti normalmente.

Del Wmplayer.exe esistono, mi pare, 3 versioni, la 7 (?), la 8, e la ultima 9, disponibili e installate con Windows XP. Sui sistemi operativi precedenti, il riproduttore si chiama  mplayer.exe  oppure mplayer2.exe (quest'ultimo tutt'ora presente anche in WinXP, e comunque per verificare se l'avete, andate alla barra del menù desktop, cliccate su Start/Esegui e digitate nella finestrina che si apre: mplayer o mplayer2, e premete OK; se uno dei due file non è presente sul computer, verrete avvisati che non è stato trovato il file digitato, altrimenti si aprirà l'applicativo, e saprete che versione avete).

A cosa può servire avere il wmplayer (o il mplayer) in una cartella di Excel? Ma ad ascoltare musica, selezionando un brano, mentre stiamo lavorando sul foglio di lavoro. Ma potrà anche servire ad impartire istruzioni vocali, avendo avuto cura di registrare prima un messaggio sonoro con il "Registratore di suoni" presente in Windows, salvandolo in un file wav, richiamato poi dal wmplayer. Va da se a questo punto, che potremo creare più file sonori per istruzioni diverse, associare i loro percorsi a istruzioni poste in pulsanti diversi, ed avremo che ogni pulsante attiverà il wmplayer, ma con un file diverso. Qualunque sia il motivo che ci porterà ad usarlo, vediamo come interreagire con il Windows Media Player :

  • Possiamo inserirlo come "oggetto" nella nostra cartella.xls di lavoro (su un foglio di lavoro oppure su una UserForm).

  • Possiamo attivarlo come applicazione esterna ad Excel (quindi non inserita), ed averlo in primo piano, in secondo piano, oppure nascosto (Hide): in questo caso si ascolta musica ma non si vede il riproduttore.

Sul foglio di lavoro - dal menu Inserisci/Oggetto e si apre una finestra simile a questa: far scorrere la barra verticale fino a trovare e selezionare la voce relativa all'oggetto che vogliamo inserire, in questo caso il Window Media Player, premere OK, puntare il mouse su un punto del foglio di lavoro e trascinando, dimensionare l'oggetto scelto:

ed otterremo una situazione simile a questa:

Le dimensioni dipenderanno da noi e da quanto abbiamo dimensionato l'oggetto. Sarà possibile ridurlo in modo che rimanga solo la barra dei comandi, dove potremo usare il suo pulsante Stop per interrompere ciò che ascoltiamo, lo potremo vedere così:

Questo "oggetto" è un oggetto ActiveX, e possiede eventi propri; infatti appena inserito sul foglio di lavoro compare la finestrina (quella con la piccola squadra) da cui sarà possibile entrare in "modalità progettazione"; doppiocliccando sull'oggetto inserito, si aprirà il VBE (Visual Basic Editor) e ci troveremo con il modulo del foglio sul quale abbiamo inserito l'oggetto, aperto e con l'evento Click del WindowsMediaPlayer settato, e pronto per ricevere le istruzioni da eseguire quando cliccheremo (usciti da modalità progettazione) sul pulsante di "avvio riproduzione" del wmplayer posto sul foglio, così:

  • Private Sub WindowsMediaPlayer1_Click(ByVal nButton As Integer, ByVal nShiftState As Integer, ByVal fX As Long, ByVal fY As Long)
    ...qui vanno inserite le istruzioni su cosa fare quando genereremo l'evento click
    End Sub

Prima di esaminare le istruzioni per eseguire una canzone, vorrei precisare che per avviare la riproduzione è possibile sfruttare anche altri eventi, per esempio l'Activate del Worksheet  sul quale è posto il wmplayer, oppure un pulsante creato apposta ed associato ad una macro apposita, Il WorkBook_Open, il Selection_Change del Worksheet, abbinato al metodo Intersect, per mandare in esecuzione una canzone solo se si seleziona una determinata cella, o ancora il Worksheet_Change, ecc., ho preferito esemplificare sull'evento Click del WindowsMediaPlayer perchè è l'evento più simile all'azione che compiamo quando usiamo i tasti di un riproduttore musicale o video; infatti potremo usare (e sono perfettamente funzionanti) anche tutti gli  altri tasti ("Pausa", "Stop", "Volume", ecc.) presenti sull'oggetto inserito.

Ed ora vediamo come impostare l' istruzione per "chiamare" una canzone.

  • WindowsMediaPlayer1.URL = "C:\Temp\town.mid"

Sfruttiamo la proprietà URL dell'oggetto WindowsMediaPlayer1, alla quale va assegnato il percorso completo di nome e di estensione, posto tra doppi apici (stringa), quindi la nostra istruzione completa potrà essere:

  • Private Sub WindowsMediaPlayer1_Click(ByVal nButton As Integer, ByVal nShiftState As Integer, ByVal fX As Long, ByVal fY As Long)
    WindowsMediaPlayer1.URL = "C:\Temp\town.mid"
    End Sub

I lettori avranno già capito che per poter variare canzoni o suoni da far riprodurre, dovremo rendere variabile percorso e nome file musicale, in modo da ascoltare a nostro piacere una canzone specifica. Dovremo usare una variabile alla quale assegnare di volta in volta nome e percorso della canzone da ascoltare. Potremo quindi crearci un elenco dei nomi di files e loro percorsi, creandoci una tabella posta su un foglio di lavoro, oppure in una ListBox che caricheremo con un determinato elenco files, o ancora altri sistemi. Sul sito esistono diversi esempi su come reperire un elenco di files, in modo da formare una tabella su un foglio di lavoro (vedere anche l'articolo DriveList,Dirlist,FileList) con l'elenco dei percorsi e dei nomi file, oppure crearsela manualmente.

Comunque la si ottenga (la tabella), potremo selezionare una cella dell'elenco rendendola attiva , e usare ActiveCell per assegnare alla variabile il percorso che mira al file.

Solo che dobbiamo considerare due aspetti:

  • anche se selezioniamo una cella rendendola attiva, nel momento in cui clicchiamo sul wmplayer per avviare la riproduzione, togliamo lo stato attivo dalla cella, e il wmplayer non saprà cosa suonarci.

  • l'evento Click del WindowsMediaPlayer1 si verifica in effetti solo quando clicchiamo sull'oggetto wmplayer, e non quando premiamo il suo tasto "avvia riproduzione" (tasto Play). La routine vista sopra funziona perchè predispone il settaggio (l'impostazione) della sua proprietà URL  assegnandogli il  percorso predefinito che mira al file da riprodurre, per questo è poi possibile avviare la riproduzione cliccando sull'apposito pulsante, ma quando rendiamo "variabile" questo percorso, avremo bisogno di cliccare sul wmplayer, in una qualsiasi punto, per avviare la riproduzione. Sarà poi possibile stoppare la musica e riavviarla agendo ora sul pulsante Play in quanto il percorso è stato memorizzato nella proprietà URL, e verrà sostituito da un'altro brano solo se cliccheremo sul wmplayer.

La soluzione è comunque semplice; useremo una variabile Pubblica e tramite l'evento Worksheet_SelectionChange, assegneremo a questa variabile il contenuto della cella in quel momento selezionata. La variabile si aggiornerà quindi ad ogni cambio di selezione cella fatta sul foglio di lavoro, ed essendo Pubblica sarà ora letta anche dall'istruzione WindowsMediaPlayer1_Click che, con un click sul wmplayer sul foglio,  riprodurrà la canzone corrispondente alla cella selezionata. Per evitare che la variabile si carichi anche di dati che non siano percorsi a file musicali, potremo usare il metodo Intersect per limitare l'azione solo sull'intervallo della nostra tabella. Esemplificando, vediamo come impostare le istruzioni, e un esempio di tabella posta nella colonna F a partire dalla riga 1:

Chiameremo la nostra variabile MiaMu, e la dichiariamo usando la sezione Generale - Dichiarazioni del modulo del foglio:

  • Public MiaMu As String

poi usiamo l'evento Worksheet_SelectionChange per istruire l'assegnazione del valore della cella attiva alla variabile :

  • Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Range("F1:F4")) Is Nothing Then
    Exit Sub
    Else
    MiaMu = ActiveCell.Text
    End If
    End Sub

e per finire istruiamo l'istruzione per l'evento Click sul wmplayer:

  • Private Sub WindowsMediaPlayer1_Click(ByVal nButton As Integer, ByVal nShiftState As Integer, ByVal fX As Long, ByVal fY As Long)
    WindowsMediaPlayer1.URL = MiaMu
    End Sub

Basta quindi selezionare una canzone (e quindi una cella), poi cliccare in un qualsiasi punto sul wmplayer, ed ascolteremo la musica selezionata. Sotto vediamo, in modalità Visual Basic Editor, il modulo foglio e istruzioni

Chiaramente come Target potremo definire l'intervallo che ci interessa, lungo quanto ci pare, e posto dove ci pare, basterà modificare i riferimenti nell'istruzione. Sarà inoltre possibile munire la nostra routine di istruzioni che impediscano di mandare in esecuzione file non musicali, ma questo esempio è più che sufficiente.

Nella seconda parte parleremo di inserimento del wmplayer su UserForm.

Buon Lavoro.

prelevato sul sito www.ennius.altervista.org