Windows Media Player - usarlo con una applicazione .xls - terza parte - dal 24/09/04 pagina vista: volte In questo articolo vedremo come usare il Windows Media Player come applicazione (programma) esterna a Excel. Sfrutteremo delle procedure in parte gia presenti (vedi articoli " Apertura Applicativi da Excel" sull'altro sito, oppure " Usare Shell + Run " e " Chiusura Applicativi da Excel" su questo sito) . Queste procedure ci consentono quindi di evitare l'inserimento di "oggetti" (ActiveX) nella cartella di Excel, rendendo indipendenti i due programmi (Excel e Window Media Player), i quali "gireranno" in due finestre separate. Useremo in sostanza delle chiamate alla Shell di sistema, per comandare l'apertura e/o la chiusura dell'applicazione satellite. La sintassi della funzione Shell richiede due argomenti :
Per indicare la modalità possiamo usare dei valori numerici predefiniti, oppure delle costanti di visual basic relative all'argomento ; vediamo uno specchietto:
Per quanto riguarda i brani da far eseguire, e loro percorsi, possiamo impostare una colonna di un foglio di lavoro, come suggerito nelle prima e seconda parte di questo gruppo di articoli; potremo quindi trovarci in una situazione simile a questa: Lo scopo sarà quello di disporre di un'elenco, comunque ottenuto, (con i percorsi dei file che ci piacerà ascoltare) in modo da assegnarli ad una variabile che rappresenterà di volta in volta il percorso del file che vogliamo ascoltare. Dividiamo ora le istruzioni in due diverse procedure:
Per entrambe le procedure non potremo avvalerci della proprietà URL dell'oggetto wmplayer, visto che di questo "oggetto" non ne facciamo uso. Le istruzioni per l'utilizzo della funzione Shell cambiano in funzione del Sistema Operativo installato. Gli esempi che seguono sono specifici per funzionare su Windows XP, chi possiede Win98xxx dovrà modificare le istruzioni di chiamata alla Shell come spiegato nell'articolo "Apertura Applicativi da Excel" . E comunque, per identificare il brano da mandare in esecuzione, seguiremo l'esempio contenuto nella parte prima di questi articoli: ci affideremo ad una variabile da rendere Pubblica, MiaMu, con una variante nel posizionamento della dichiarazione variabile: anzichè usare la sezione "Generale - Dichiarazioni" del modulo del foglio che conterrà l'elenco delle canzoni, inseriremo la dichiarazione nella stessa sezione ma di un modulo nuovo che inseriremo nel progetto, modulo che conterrà la macro per la chiamata alla Shell. Sfrutteremo comunque l'evento Worksheet_SelectionChange con il metodo Intersect per "catturare" nella variabile MiaMu il brano da riprodurre. Procedura A : avvio del WMP ridotto a icona. Possiamo istruire due diverse istruzioni per chiamare la Shell, valide entrambi, ognuno scelga quella che preferisce: usiamo il valore 4 per indicare il windowstyle (la modalità)
la differenza tra le due macro e che nella Suona1() dobbiamo indicare necessariamente il percorso completo dove si trova l'eseguibile da aprire (il wmplayer.exe), seguito dal percorso che mira al file da far eseguire (in questo caso la variabile MiaMu), nella macro Suona2() invece è il metodo Run che si occupa di trovare l'eseguibile reperito tramite il CreateObject ed assegnato alla variabile myshell, adatto a riprodurre il file la cui estensione è contenuta nella variabile MiaMu. In parole povere se il file da aprire (MiaMu) fosse un documento di Word (con estensione .doc) la macro Suona2() non avrebbe cercato il wmplayer.exe necessario a riprodurre un file con estensione musicale, ma avrebbe cercato e aperto WinWord.exe per poterci aprire il file .doc. Credo non sia necessario considerare le implicazioni....... Ripetiamo comunque l'insieme delle procedure necessarie: questa la routine che avremo predisposto sul modulo del Foglio1 (se l'elenco sarà sul foglio1) e che serve ad assegnare alla variabile MiaMu il percorso del file da riprodurre, ad ogni cambio di selezione di una cella dell'intervallo previsto nel Target:
e queste le istruzioni che inseriremo in un modulo nuovo: nella sezione Generale - Dichiarazioni, scriveremo:
e poi, nello stesso modulo, la macro:
oppure, ma non sarà necessario dichiarare Public myshell, ma solo MiaMu:
Procedura B : avvio del WMP in modalità Hide, cioè nascosta, invisibile. In questo caso è sufficiente ripetere una delle due macro viste sopra (Suona1() oppure Suona2()) ma con il valore che indica la modalità di esecuzione impostato a 0 (zero) anzichè 4. Avremo però necessità di un qualcosa che ci consenta di chiudere il Windows Media Player dato che il programma è inaccessibile in quanto non visibile. Useremo quindi un nuovo pulsante posto sullo stesso foglio sul quale abbiamo posto un pulsante per l'avvio del WMP, pulsante associato a queste istruzioni (vedi articolo "Chiusura Applicativi da Excel ") che ripetiamo sotto. Inseriremo nel progetto un nuovo modulo (giusto per "non affollare" la zona Generale - Dichiarazioni del primo modulo) e nella zona Generale - Dichiarazioni scriveremo:
quindi, nello stesso modulo inseriremo una Funzione Utente (CloseApplication) dichiarandola come Pubblica, che ha lo scopo, se chiamata, di chiudere un applicativo aperto, riconosciuto dal nome dell'applicativo che appare nella sua finestra di esecuzione. Poichè anche se nascosta la finestra del WMP porta scritto "Windows Media Player", assegnando questo nome alla variabile su cui agisce la Funzione, otterremo la chiusura del programma:
per ultimo, scriveremo la macro che chiama la Funzione vista sopra, tramite il metodo Run:
La sub Chiudi() sarà la macro che assoceremo al secondo pulsante sul foglio. Non sarebbe male, per evitare di lasciare in esecuzione il wmplayer alla chiusura di Excel, di prevedere una chiamata alla funzione anche nell'evento BeforeClose del Workbook, così:
Ringrazio Roberto Lancetti (Rob@tiscalinet.it ), autore della procedura per la chiusura di un applicativo. Io non sono in grado di realizzare procedure che sfruttino chiamate alle librerie di Windows, ma con un minimo sforzo, si possono capire, modificare ed utilizzare.
Buon lavoro. prelevato sul sito www.ennius.altervista.org |