Condividi:        

[excel] Richiamare macro private

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

[excel] Richiamare macro private

Postdi ramset64 » 12/01/09 20:32

Per richiamare una macro (private) presente nel foglio1 la sintassi è Foglio1.NomeMacro, ma se la macro si trova in modulo1 qual è la giusta sintassi per richiamarla? modulo1.NomeMacro non funziona.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [excel] Richiamare macro private

Postdi Anthony47 » 12/01/09 23:25

Prova
Codice: Seleziona tutto
Call NomeMacro

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

Re: [excel] Richiamare macro private

Postdi Anthony47 » 12/01/09 23:33

No, mi sono ravveduto...
Una macro definita Private puo' solo essere richiamata dall' interno dello stesso modulo.
Quindi se la vuoi richiamare da altro modulo non devi dichiararla Private (basta cancellare Private nella riga di dichiarazione macro).

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

Re: [excel] Richiamare macro private

Postdi pietrol » 12/01/09 23:35

Ciao ramset64
se non ricordo male la specifica "Private" nella dichiarazione di una Sub serve proprio ad evitare che questa sia visibile al di fuori del suo modulo o foglio.
Valuta quali sono i motivi per cui la dichiari Private e poi la vuoi raggiungere dall'esterno, le due cose sono in contraddizione.

Ciao
Pietrol
il lupo ululà, il castello ululì
pietrol
Utente Senior
 
Post: 270
Iscritto il: 07/01/09 14:34

Re: [excel] Richiamare macro private

Postdi ramset64 » 13/01/09 12:08

Umh... qualcosa però non torna, le macro dichiarate Private presenti nei vari fogli sono richiamali dall'esterno aggiungendo al nome della macro il nome del foglio quindi Foglio1.nomemacro

Credo che allo stesso modo si possano richiamre dall'esterno le macro dichiarate Private presenti nei vari moduli (o almeno è logico pensarlo). Bisogna però capire come indicare davanti al nome della macro il modulo.

Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 13/01/09 15:37

Umh... qualcosa però non torna, le macro dichiarate Private presenti nei vari fogli sono richiamali dall'esterno aggiungendo al nome della macro il nome del foglio quindi Foglio1.nomemacro
Credo che allo stesso modo si possano richiamre dall'esterno le macro dichiarate Private presenti nei vari moduli (o almeno è logico pensarlo). Bisogna però capire come indicare davanti al nome della macro il modulo.

Private e' un elemento di dichiarazione, e come significato Microsoft dice: "Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata."
Altre ipotesi sono inutili. Fortunatamente se si vuole che una macro sia accessibile da altro modulo basta non dichiararla Private.
Sul mio vba (excel xp o excel 2003) Foglio1.NomeMacro funziona solo se NomeMacro non e' Private; forse 2007 ha introdotto qualche novita'?

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

Re: [excel] Richiamare macro private

Postdi ramset64 » 13/01/09 16:02

Anthony47 ha scritto:Private e' un elemento di dichiarazione, e come significato Microsoft dice: "Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata."
Altre ipotesi sono inutili. Fortunatamente se si vuole che una macro sia accessibile da altro modulo basta non dichiararla Private.
Sul mio vba (excel xp o excel 2003) Foglio1.NomeMacro funziona solo se NomeMacro non e' Private; forse 2007 ha introdotto qualche novita'?

Ciao.

Credo proprio di si a questo punto. Con Excel 2007 Foglio1.NomeMacro funziona anche se NomeMacro è Private. Probabilmente la novità riguarda anche le macro private presenti sui moduli, ma non riesco a capire come richiamarle.
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 13/01/09 23:01

Per toglierci il dubbio su Private: dal vba, avvia l' help on line e cerca la descrizione per l' istruzione Sub; quindi controlla quale significato viene attribuito alla voce "Private".

Poi guarda alla voce "Call" se ci sono esempi sul richiamo di macro Private.

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

Re: [excel] Richiamare macro private

Postdi ramset64 » 14/01/09 16:07

Dall'help di vba:
private = Facoltativa. Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata.

Strano però... se è inserita nel foglio1 è richiamabile anche da altri fle.

Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 14/01/09 22:07

Ci sono molti casi in cui le rogole non sono sempre applicate da chi le definisce, ma almeno se le applichi non si sbaglia.

Intanto ho visto che Application.Run "NomeMacro" manda in esecuzione anche macro Private (Application.Run "NomeFile.xls!NomeMacro" se da altro file).

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

Re: [excel] Richiamare macro private

Postdi ramset64 » 15/01/09 16:42

Interessante, peccato non riesca a modificare questo codice per fargli leggere una macro private.

Windows(StWB).Activate
NextName = ActiveCell.Value
If NextName = "" Then GoTo Exita
Workbooks.Open Filename:=NextName
OWb = ActiveWorkbook.Name
'Qui hai aperto il file selezionato nel tuo elenco
CMacro = "'" & OWb & "'!Foglio1.CmdBtnx_Click" '<<< Cioe' ! +il nome della macro
Application.Run (CMacro)

Anthony gentilmente mi dici come va modificato?
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 15/01/09 23:22

Ma perche' continui a chiedermi come fare cose che io dico non vanno fatte?

Stavolta mi riferisco al fatto che vuoi lanciare una macro messa (credo) sul modulo di Foglio1; ma io continuo a dire: sui moduli di Foglio ci vanno solo le macro di evento, le altre vanno su moduli standard.
Questo senza contare che se si trattasse di una macro "di evento" non credo che la puoi invocare con una istruzione; se proprio devi farlo, allora nella macro di evento metti solo l' inizio (Private Sub xyxcxc) e la fine (End Sub) e in mezzo una Call MacroXYZ. Potrai cosi' invocare la MacroXYZ e il risultato sara' lo stesso che l' occorrenza dell' evento.
Infine, se fosse la macro di Click di un pulsante, allora tieni presente che il pulsante e' disponibile sia come Modulo che come Strumento di controllo (sono due barre di strumenti diversi); il "pulsante strumento di controllo" e' molto piu' sofisticato del "pulsante modulo", ma anche piu' complesso da gestire; nella grande maggioranza dei casi io uso il "Pulsante modulo", e cosi' suggerisco di fare anche a chi non e' programmatore esperto.

Cio' detto, nemmeno con Application.Run si riesce a lanciare una macro Private su un modulo di Foglio.

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

Re: [excel] Richiamare macro private

Postdi ramset64 » 15/01/09 23:35

Ma perchè continui sempre ad avere cosi poca fiducia?
Proprio perchè voglio darti retta e spostare tutte le macro in moduli al momento presenti nel foglioN che ti ho fatto la precedente domanda, quel codice cosi come è funziona perferttamente, richiama senza nessun problema le macro private dal foglioN (se ben ricordi o se guardi l'inzio della discussione, ti accorgerai che è nata proprio per questo).

Ma se vado a spostare tutte le macro in moduli, quel codice postato poco fa non va più perchè non basta mettergli davanti foglioN ma come tu stesso mi hai fatto presente bisogna richiamarla in altro modo.

Se volessi lasciare le macro in foglioN quel codice non andrebbe affatto modificato, funziona perfettamente cosi.

Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 15/01/09 23:46

Ma perchè continui sempre ad avere cosi poca fiducia?
CHIEDO VENIA :D :D :D
Il fatto e' che non avevi spiegato l' obiettivo, e avevo interpretato "come faccio funzionare questa cosa che oggi non mi funziona?"

Ora se la macro si trova in un modulo standard (non "di foglio"), dovrebbe bastare scrivere Application.Run "NomeMacro"; quindi dovresti cambiare questa
CMacro = "'" & OWb & "'!Foglio1.CmdBtnx_Click" '<<< Cioe' ! +il nome della macro
in questa:
Codice: Seleziona tutto
CMacro = "'" & OWb & "'NomeMacro" '<<< Cioe' nome della macro preceduto da APICE-SEMPLICE

Prova e fai sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel] Richiamare macro private

Postdi ramset64 » 17/01/09 15:10

No, Anthony cosi la macro non parte, da errore!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 18/01/09 16:27

Mi avrebbe aiutato sapere il tipo di errore e la conferma che avviene sull' istruzione Application.Run (CMacro)

Comunque, facciamo il punto.
1) stiamo parlando di come richiamare macro "private" residenti su un modulo standard di codice (non "di foglio") da un altro modulo; vero?
2) resta la curiosita' di sapere perche' prima la vuoi dichiarare Private e poi la vuoi gestire come pubblica
3) la macro che vuoi chiamare su che modulo e' localizzata e come si chiama? (tutta la prima riga di codice)
4) se in una macro di Modulo1 scrivi Application.Run "NomeMacro", la macro viene richiamata? (lo vedi meglio in passo-passo: cursore sopra la scritta Application.Run, F8; ad ogni F8 verra' eseguita una istruzione, quella evidenziata; F5 per eseguire tutto fino alla fine).
5) Se NO, togliendo la definizione Private da NomeMacro, la macro viene richiamata?

Magari dimostriamo la validita' della definizione di Private, che non mi meraviglierebbe: "Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata."

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

Re: [excel] Richiamare macro private

Postdi ramset64 » 19/01/09 18:25

Anthony47 ha scritto:Comunque, facciamo il punto.
1) stiamo parlando di come richiamare macro "private" residenti su un modulo standard di codice (non "di foglio") da un altro modulo; vero?
2) resta la curiosita' di sapere perche' prima la vuoi dichiarare Private e poi la vuoi gestire come pubblica
3) la macro che vuoi chiamare su che modulo e' localizzata e come si chiama? (tutta la prima riga di codice)
4) se in una macro di Modulo1 scrivi Application.Run "NomeMacro", la macro viene richiamata? (lo vedi meglio in passo-passo: cursore sopra la scritta Application.Run, F8; ad ogni F8 verra' eseguita una istruzione, quella evidenziata; F5 per eseguire tutto fino alla fine).
5) Se NO, togliendo la definizione Private da NomeMacro, la macro viene richiamata?

Magari dimostriamo la validita' della definizione di Private, che non mi meraviglierebbe: "Indica che la routine Sub è accessibile solo per le altre routine incluse nel modulo in cui è stata dichiarata."

Ciao.

Caro Anthony questo somiglia ad un interrogatorio, vorrrei un avvocato... scherzi a parte a me sembra si stia esagerando, hai fatto una serie di domande inutili.... tu hai scritto:

Anthony47 ha scritto:Intanto ho visto che Application.Run "NomeMacro" manda in esecuzione anche macro Private (Application.Run "NomeFile.xls!NomeMacro" se da altro file).

Già che quanto hai scritto corrisponde al vero (verificato!) l'unico problema è la sintassi nel codice come mi hai suggerito, da qua a fare un interrogatorio ce ne corre.
Ci smanetterò sopra appena ne avrò il tempo, va bene cosi.
Grazie, Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [excel] Richiamare macro private

Postdi Anthony47 » 19/01/09 19:11

Caro Anthony questo somiglia ad un interrogatorio, vorrrei un avvocato... scherzi a parte a me sembra si stia esagerando, hai fatto una serie di domande inutili....
Non ho l' abitudine di fare domande inutili, ma siccome ti limiti a scrivere "No, Anthony cosi la macro non parte, da errore!" ho cercato di estorcerti qualche informazione in piu'.
Ricordo la discussione e' partita su come "Richiamare macro Private", ma ora, da mezze frasi (tipo "l'unico problema è la sintassi nel codice come mi hai suggerito") e' diventato la sintassi di una istruzione; insomma, su che cosa stai chiedendo aiuto?

Riconfermo tutto il mio post precedente.
Avatar utente
Anthony47
Moderatore
 
Post: 19441
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[excel] Richiamare macro private":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti