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

Inserimento del wmplayer in una UserForm. - Sicuramente avremo aperto il Visual Basic Editor ed avremo inserito una UserForm nel progetto.

Dalla "Casella degli Strumenti" relativa agli "oggetti" presenti o inseribili nella UserForm, cliccando destro nell'area "Controlli", otteniamo il menù dal quale selezioniamo "Controlli Aggiuntivi" (vedi immagine):

Si aprirà questa finestra (sotto) "Controlli aggiuntivi" dove, scorrendo con lo scroll verticale, metteremo un segno di spunta accanto alla voce Windows Media Player, e premeremo Ok:

ed otterremo nella casella degli strumenti la comparsa dell'icona dell'oggetto ora disponibile; la classica icona del Windows Media Player:

Ora basta selezionare il controllo appena aggiunto, e spostandoci sulla UserForm, cliccare e trascinare per dimensionare il controllo. Potremo limitare la dimensione del controllo inserito, in quanto lo renderemo Non visibile, e quindi la sua dimensione sarà irrilevante visto che in questo progettino l'esecuzione della musica la attiveremo non dal wmplayer, ma da un normale CommandButton.

Lavorando con una UserForm, non sarebbe male utilizzare una ListBox con il compito di reperire quell'elenco dei percorsi dei file musicali, che abbiamo creato sul foglio di lavoro visto nel precedente articolo. Questo ci consentirà di visualizzare le canzoni e di selezionare il pezzo che vogliamo riprodurre, quindi premere il CommandButton che avvierà la riproduzione.

Potremo, in fase di riproduzione, selezionare un nuovo pezzo e premendo il CommandButton, sostituirlo nella riproduzione. In pratica, non vedendo il wmplayer perchè reso non visibile, utilizziamo la UserForm per avviare o modificare un pezzo in esecuzione, oppure chiudere la UserForm per stopparlo.

Esistono diversi modi di sfruttare procedure per usare il wmplayer su una UserForm, ma il procedimento appena descritto è sicuramente semplice e alla portata di tutti.

In modalità progetto, vedremo così la nostra UserForm con i "controlli" inseriti:

Impostiamo la proprietà Visible del wmplayer a False, e compilate le istruzioni (che leggiamo più sotto), quando avvieremo la nostra UserForm dal foglio di lavoro, la vedremo così:

Vediamo ora le istruzioni da compilare; per prima l'istruzione per richiamare la UserForm, che potremo associare ad un pulsante posto sul foglio di lavoro:

  • Sub ApriForm()
    UserForm1.Show
    End Sub

poi sfrutteremo l'evento Activate della UserForm per caricare (aggiungere alla..) la ListBox1 con l'elenco delle canzoni posto su un foglio; tralascio di puntualizzare che qualunque sia la lunghezza dell'elenco e la sua posizione (compreso il fatto che si trovi su un foglio diverso da quello da cui lanciamo la UserForm), la ListBox1 viene caricata con  il metodo AddItem, quindi sfruttando un ciclo For..Each..Next che scorra tutte le celle dell'elenco per leggere i nomi da aggiungere:

  • Private Sub UserForm_Activate()
    Dim CL As Object
    Set zona = Sheets(1).Range("F1:F5")
    'impostiamo l'intervallo sul Foglio1, assegnandolo alla variabile "zona"
    For Each CL In zona  
    'per ogni cella nell'intervallo "zona"
    If CL.Value <> "" Then 
    'se la cella non è vuota, allora
    ListBox1.AddItem CL.Text 
     'si carica (si aggiunge) la ListBox1 con il testo contenuto nella cella ora letta
    End If
    Next
     'si prosegue alla cella successiva leggendo (e caricando) tutte le celle dell'intervallo "zona"
    End Sub

Senza complicarci la vita prevedendo istruzioni per l'eventuale azzeramento (RemoveItem) della ListBox, se aggiungeremo nuovi percorsi di canzoni, nell'elenco sul foglio di lavoro, basta chiudere la UserForm e riaprirla per avere il nuovo elenco. Ovviamente dovremo variare i riferimenti nell'intervallo dell'istruzione sopra, o meglio ancora, usare in origine un'intervallo più ampio, che contempli celle vuote, che potremo poi riempire senza ulteriori modifiche al codice, per esempio F1:F30.

E' al CommandButton1 (Riproduci) che affidiamo il compito di mandare in esecuzione il brano che avremo selezionato nella ListBox1, ed inseriremo un controllo If..Then per assicurarci di aver selezionato un percorso valido,e per far questo seguiamo un ragionamento: se stiamo usando dei "percorsi" che "mirano" ai file, stiamo sicuramente usando una stringa in cui si scrive per prima l'unità su cui sono i brani, seguita dai due punti e dallo slash (es: C:\ ); controlleremo quindi se esistono i due punti che si trovano obbligatoriamente al secondo posto nella stringa. Questo accorgimento non ci salvaguarda se saremo a sufficienza "tonni" da scrivere in un'intervallo destinato a contenere percorsi a brani musicali, altre cose come ad esempio una formula mancata tipo 8:2 (mancata perchè manca il segno di uguale =), oppure orari (9:30). Se vorremo "protezioni" complete dovremo istruire istruzioni If che verifichino IsNumeric, IsDate, HasFormula, ecc. ecc.

  • Private Sub CommandButton1_Click()
    MiaMu = ListBox1.Text
    'con la variabile MiaMu prendiamo il percorso selezionato nella ListBox1
    If Mid(MiaMu,2,1) <> ":" Then 
    'controlliamo che la stringa sia un percorso, altrimenti usciamo avvisando
    MsgBox "Brano non valido"
    ListBox1.SetFocus
    Exit Sub
    End If
    WindowsMediaPlayer1.URL = MiaMu 
    'qui usiamo l'istruzione già spiegata nell'altro articolo per eseguire il brano
    End Sub

Come spiegato più sopra, basterà selezionare un'altro brano nella lista e premere di nuovo il CommandButton1 per eseguire il nuovo brano interrompendo il precedente.

Ora vediamo il CommandButton2 (Chiudi) con cui chiudiamo prima il wmplayer e quindi la UserForm scaricando la memoria:

  • Private Sub CommandButton2_Click()
    WindowsMediaPlayer1.Close 
    'chiudiamo il wmplayer
    End 
    'chiudiamo la UserForm
    End Sub

Queste sarebbero le istruzioni base sufficienti ad eseguire brani musicali da un foglio di Excel, mentre stiamo lavorando (per questo avremo impostato la proprietà ShowModal della UserForm a False, altrimenti sarà impossibile agire sui fogli). E' evidente che le possiamo variare, migliorando sia il modo in cui "carichiamo" una lista di brani da riprodurre, sia organizzare una cartella predefinita dove conservare i brani da riprodurre, ed utilizzando il percorso alla cartella come costante da concatenare alla variabile che identificherà il solo brano. Ma per i meno "esperti", così come sono, queste istruzioni sono facili da seguire.

Nella terza parte invece esamineremo come far eseguire brani musicali o video, ma chiamando il Windows Media Player come applicazione esterna al nostro Excel.

Buon lavoro.

prelevato sul sito www.ennius.altervista.org