Chiamare Macro contenute in altre cartelle xls - pagina vista: volte Una recente domanda è il motivo di questo articolo, e visto che la letteratura in merito all'argomento di questo articolo, non è chiara, o quantomeno lacunosa, presento un'altra soluzione e alcuni chiarimenti. Premetto che forse la soluzione migliore è contenuta nel mio articolo "Funzioni Utente-Aggiunta .XLA" sul sito padre, dove i concetti espressi sono validi anche per macro da rendere comuni, e senza che altre cartelle siano aperte. Il problema era: quale sintassi usare per lanciare una macro da una cartella diversa da quella in cui la macro risiede? Intanto perchè la cosa funzioni, è necessario che entrambe le cartelle siano aperte: quella dalla quale chiameremo la macro, e quella che contiene la macro da lanciare. La sintassi suggerita sia dalla guida in linea, sia dalla letteratura esistente, ci dice che abbiamo bisogno di dichiarare:
La sintassi prevede l'uso di parentesi quadre, come in questo esempio:
La guida in linea riporta, cercando l'argomento "Chiamata di routine con lo stesso nome", riporta, a conferma di quanto sopra esposto, queste testuali parole ed un esempio:
Rimane però il fatto che questo tipo di istruzione non funziona, genera un errore; il perchè non lo so, ma una nota, riportata a seguire dopo la descrizione sopra, cita:
Questa precisazione fa sorgere quindi un dubbio: ma allora, devo usare il nome del progetto, o il nome della cartella di lavoro? La risposta la troviamo in queste due soluzioni, che entrambe sfruttano il nome della cartella di lavoro. La sintassi cambia di molto rispetto a quelle viste sopra, e prevede: nomecartella ! nome macro, posti tra parentesi tonde e tra doppi apici, così:
Potremo sfruttare due metodi per lanciare l'istruzione: il metodo Run o il metodo OnAction (cambia leggermente la sintassi): esempio di istruzione inserita nell'evento Click di un CommandButton (ActiveX):
esempio di istruzione inserita come macro in un modulo standard, ed attivata da un pulsante ottenuto dalla Forma "Rettangolo" presa da "Disegno":
esempio di istruzione inserita in un evento di un foglio di lavoro, l'evento Change di un Worksheet; simula il lancio della macro esterna se il valore di una carta cella (la F9 ad esempio) conterrà un certo valore (15) :
Evidentemente,
seguendo la sintassi suggerita nella guida, mancherò (o mancheremo) in
qualche cosa, visto che non otteniamo il risultato sperato, ma i dilettanti
come me troveranno in queste soluzioni una valida alternativa funzionante. Buon lavoro. prelevato sul sito www.ennius.altervista.org |