Supponiamo che hai PrimoFile aperto; supponiamo che ti farebbe comodo poter eseguire la macro MacroMa che si trova in Modulo1 di un SecondoFile.xlsm, al momento non aperto.
La risposta e' che non puoi eseguire un codice che non e' in memoria, cioe' che si trovi in un file chiuso.
Tuttavia il comando Run ti consente di specificare una macro appartenente a un secondo file chiuso; in questo caso pero':
a) Il secondo file viene aperto
b) La macro viene eseguita
Un codice di esempio, da inserire
in un modulo vba di PrimoFile:
- Codice: Seleziona tutto
Sub MacroRemota()
Application.Run "'D:\DDownloads\ SecondoFile.xlsm'!Modulo1.MacroMa" '<<< Personalizza Path & Nome file
Workbooks("SecondoFile.xlsm ").Close savechanges:=False
End Sub
In funzione delle impostazioni di sicurezza della propria installazione, e' possibile che l'utente durante la fase a) suddetta debba abilitare le macro del file che viene aperto, rispondendo al classico messaggio "Il file contiene macro, bla bla, Vuoi Abilitare le macro Si oppure No"
Poi la macro viene eseguita e il secondo file rimane aperto; da qui il bisogno di chiudere SecondoFile
Nelle mie prove non sono riuscito a impedire il messaggio bloccante con la richiesta di provvedere ad abilitare le macro di SecondoFile.
Pertanto il mio suggerimento e' che provvedi in modo esplicito ad aprire SecondoFile, perche' in questo modo la richiesta di abilitare le macro non sara' sollevata, e il processo sara' piu' trasparente. Cosa che si fa con:
- Codice: Seleziona tutto
Sub Remota2()
Workbooks.Open "D:\DDownloads\SecondoFile.xlsm"
Application.Run "'SecondoFile.xlsm'!Modulo1.MacroMa" '
Workbooks("SecondoFile.xlsm").Close savechanges:=False
End Sub
Ciao