Condividi:        

Eseguire macro contenuta in altro file xls

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

Eseguire macro contenuta in altro file xls

Postdi ricky53 » 05/09/09 17:14

Ciao a tutti,
ho questa necessità:
eseguire una macro (“Macro_Mia”)
presente in un file diverso (“Cartel2.xls”) da quello in uso (“Cartel1.xls”)
ed il file che contiene la macro da eseguire è chiuso
e si trova in un percorso diverso (è in “C:\”) da quello attivo per excel (“Documenti”)

Se eseguo la seguente istruzione

Codice: Seleziona tutto
Application.Run "C:\Cartel2.XLS!ThisWorkbook Macro_Mia "


Ottengo
Errore di runtime “1004”
impossibile trovare la macro …


Per il momento ho risolto in questo modo:

Codice: Seleziona tutto
chdir “C:\”
Application.Run "Cartel2.XLS!ThisWorkbook.Macro_Mia"


Esiste un modo più semplice senza cambiare il percorso e senza aprile il file che contiene la macro da eseguire?

Grazie.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Sponsor
 

Re: Eseguire macro contenuta in altro file xls

Postdi Flash30005 » 06/09/09 01:25

Ciao Ricky

no so se ti può essere utile
la macro da attivare è nella cartella2
nel workbook (open) della cartella2 metterai la call della macro o direttamente la macro (io ho messo un messaggio)
nel file che deve lanciare la macro puoi inserire questo per prova
Codice: Seleziona tutto
Sub prova2()
Application.Visible = False
Workbooks.Open ("C:\Cartel2.XLS")
ini = Timer
attendi:
pausa = 5
If Timer < ini + pausa Then GoTo attendi
Workbooks("Cartel2.XLS").Close SaveChanges:=False
Application.Visible = True
End Sub

Non appena il file "cartella2.xls" si apre avvia la macro ma rimane invisibile e non dà alcun errore

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Eseguire macro contenuta in altro file xls

Postdi ricky53 » 07/09/09 00:05

Ciao Flash,

grazie per la risposta:funziona.
Però io non volevo aprire il file da eseguire.

Ho risolto in questo modo (dietro suggerimento di un amico di un altro forum):

Codice: Seleziona tutto
Application.Run "'C:\Cartel2.XLS'!ThisWorkbook.Macro_Mia" '


Dovevo solo inserire l'apice al percorso ed al nome del file da eseguire.

Ovviamente è necessario chiudere il file con

Codice: Seleziona tutto
Windows("Cartel2.xls").Close


Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Eseguire macro contenuta in altro file xls

Postdi Flash30005 » 11/09/09 21:46

La questione degli apici... fa impazzire il programmatore in vb (almeno a me)

Ma sei sicuro che devono essere messi così?
Codice: Seleziona tutto
Application.Run "'C:\Cartel2.XLS'!ThisWorkbook.Macro_Mia" '

(ne vedo 3, di quelli singoli, e normalmente vanno in coppia)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Eseguire macro contenuta in altro file xls

Postdi Anthony47 » 12/09/09 02:30

Sono a coppie, e l' ultimo apice e' dei commenti.

Per quello che ricordo l' apice va aggiunto se tra virgolette c' e' una stringa contenente "spazio".

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

Re: Eseguire macro contenuta in altro file xls

Postdi ricky53 » 13/09/09 21:43

Ciao a tutti,
il primo è un doppio apice (Tasto "2" mauscolo) ed il secondo è l'apice semplice (Tasto "?" maiuscolo)
l'apice semplice serve sempre, anche con nomi senza spazi) altrimenti l'esecuzione va in errore come avevo scritto quando ho posto il quesito.

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Eseguire macro contenuta in altro file xls

Postdi Flash30005 » 14/09/09 00:04

Si, so dell'uso di questi simboli con le stringhe e per sicurezza anche con i valori ma a volte ho dovuto mettere tanti di quei apici e doppi apici che non mi raccapezzavo più,
tipo:
Codice: Seleziona tutto
abc = Shell("""" & diro & "lis3.bat" & """", 2)

oppure
Codice: Seleziona tutto
criterio =  "VALUES (" & zlaz & ", '" & zratala & " ', '" & zarter & "', '" & tatecail & "', '" & ftartize & "', '" & enttize & "', " & tizeftappet & ", '" & allex & "', '" & zxzxcauce & "', '" & tarcetcauce & "', '" & avccauce & "', '" & vitthcail & "', '" & veicht & "', '" & lenchtcail & "', '" & xzxzfpot & "', '" & lazfpot & "', '" & zxzxfpot & "', '" & velftant & "', '" & ziaturna & "', '" & ziaruntize & "','" & tatalaz & "', '" & pratutti & "', '" & tipaprat & "', '" & velftantu & "', '" & zcrabb & "', '" & zabb & "')"


Quello che mi mandava in bestia (e lo fa tuttora) era sempre l'ultimo
Codice: Seleziona tutto
& "')"
:evil:
:lol: :lol: :lol:

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Eseguire macro contenuta in altro file xls

Postdi ricky53 » 14/09/09 14:31

Ciao,
direi che sono proprio tanti e ti avranno fatto impazzire !!!

Ciao da Ricky53
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Eseguire macro contenuta in altro file xls

Postdi libraio » 13/04/19 13:10

Ciao a tutti,
sono pervenuto a questo "vecchio" post che risponde perfettamente alla mia esigenza, ma non so come/dove inserire il codice.
Ho ripreso il codice di Ricky53, nel mio caso modificato in:
Application.Run "'C:\Converti Testo in Numero.XLS'!ThisWorkbook.Converti" '

Non so, tuttavia, dove scriverlo e come applicarlo (intera procedura!...)
Ed il post di Ricky53 mi manda ulteriormente in crisi qunado aggiunge:
>>>Ovviamente è necessario chiudere il file con
>>>Windows("Cartel2.xls").Close

Potete cortesemente aiutarmi, segnalandomi il procedimento per utilizzare questo (per me prezioso) codice?
Grazie
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Eseguire macro contenuta in altro file xls

Postdi Anthony47 » 13/04/19 19:14

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
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Eseguire macro contenuta in altro file xls

Postdi libraio » 14/04/19 18:48

Ciao Anthony,
ti ringrazio della risposta, una vera e propria lezione!
Delle due opzioni preferisco la prima, che esegue direttamente la macro ed in più non mi compare il messaggio "Il file contiene macro, bla bla".
Tuttavia, una volta eseguita la macro, mi compare il messaggio di errore sulla MacroRemota, se apro il debug trovo evidenziata la stringa "Application.Run..."
Può essere orininato dal fatto che il tracciato contiene spazi (es: Cartella di lavoro\applicazione excel)?
Il lavoro è comunque svolto egregiamente, quindi chiudo il messaggio di errore e proseguo sul foglio excel senza problemi. Ma non vorrei che interferisse in altro.
Ultima domanda (di cui presumo la risposta... ma ci provo). Il codice inserito vale solo per la cartella in uso. Non è possibile renderlo utilizzabile per tutte le cartelle già salvate o che andro a creare?
Chiedo scusa anticipatamente per il paragone-castroneria: non è possibile renderlo un componente aggiuntivo?
Ancora grazie
Windows7 + Excel 2003
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Eseguire macro contenuta in altro file xls

Postdi Anthony47 » 15/04/19 00:08

Hummm... dici che la "macro remota" viene eseguita ma la riga che la lancia risulta evidenziata e c'e' un messaggio di errore? Quale messaggio?
Nel comando Application.Run "'D:\DDownloads\ etc etc ho inserito l'APOSTROFO attorno al nome file proprio per gestire eventuali nomi contenenti Spazio.

Ultima domanda (di cui presumo la risposta... ma ci provo). Il codice inserito vale solo per la cartella in uso. Non è possibile renderlo utilizzabile per tutte le cartelle già salvate o che andro a creare?
Ma metterlo all'interno del tuo file Personal.xls non basta?
Il file Personal viene aperto in modo nascosto ad ogni avvio di excel, quindi le sue macro sono sempre disponibili.
Apri il vba e nel frame Progetto-VBAProject cerca ed espandi il progetto del tuo file Personal; poi in un suo Modulo inserisci il codice della macro che vuoi tenere a disposizione.
Quando chiudi Excel ti sara' chiesto se vuoi salvare il file Peronal, ovviamente risponderai Sì.
E se non hai ancora un file Personal, allora prova a registrare una nuova macro qualsiasi, scegli pero' "Memorizza macro in Cartella Macro Personale".
A questo punto un file Personal.xls e' aggiunto nella tua configurazione e puoi usarlo come "archivio" per macro da tenere a disposizione.

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

Re: Eseguire macro contenuta in altro file xls

Postdi libraio » 15/04/19 13:09

Anthony,
grazie a te ho finalmente capito come creare la cartella Personal, ottenendo il risultato cercato.
Ovviamente questa soluzione risolve l'altra questione che ti avevo esposto; rispondo comunque alla tua richiesta:
il messaggio di errore che mi appare lanciando la "macro remota" è il seguente:
Errore di run-time '9':
Indice non incluso nell'intervallo
Per me è un problema superato, ma resto a tua disposizione qualora ti servissero altri elementi in merito.
Mi inchino e ti ringrazio
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Eseguire macro contenuta in altro file xls

Postdi Anthony47 » 15/04/19 13:33

Per me è un problema superato, ma resto a tua disposizione qualora ti servissero altri elementi in merito.

No no, se sei a posto non vado a cercarmi grattacapi :D
Alla prossima...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Eseguire macro contenuta in altro file xls":


Chi c’è in linea

Visitano il forum: Nessuno e 55 ospiti