|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, vorrei potere concatenare in alcuni file il lavoro svolto in essi dalle relative macro, chiudendo di volta in volta il file precedente. Supponendo 2 file di tipo .xlsm nominati genericamente Workbook1, 2 terminati i lavori dell'ultima macro del Workbook1 le inserisco in coda il codice Workbooks.Open Filename:= _ "C:\percorso\Workbook2.xlsm" in modo da aprire il Workbook2 dopodiché, in esso, con una Private Sub Workbook_Open che si autoesegue all'apertura del file comando prima la chiusura, senza salvataggio delle modifiche, del Workbook1 e poi l'esecuzione di una macro nel Workbook2 rimasto aperto. Il problema è che viene eseguito tutto, eccetto la macro chiamata alla fine. Qual'è la soluzione? Dove sbaglio? Grazie assai, buona giornata eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:. Il problema è che viene eseguito tutto, eccetto la macro chiamata alla fine. Qual'è la soluzione? Dove sbaglio? Grazie assai, buona giornata eZio
Salve non ho capito quale macro non ti esegue alla fine. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, chiedo scusa per il mio solito "ermetismo serpeggiante"... :-)) La sequenza è questa: prima dell'End Sub dell'ultima macro eseguita nel file Workbook1 ho dato istruzione di aprire il file Workbook2 Workbooks.Open Filename:= _ "C:\percorso\Workbook2.xlsm" All'apertura di Workbook2 si esegue la sub Private Sub Workbook_Open() Workbooks("Workbook1.xlsm").Activate ActiveWorkbook.Close savechanges:=False Workbooks("Workbook2.xlsm").Activate Call Macro1 End Sub La sequenza viene eseguita regolarmente, ma non viene eseguita la Macro1 Non viene restituito nessun Errore, e per eseguire la Macro1 devo procedere manualmente dal menù Macro > Esegui, ma il mio intento è quello di automatizzare la sequenza operativa in modo che ogni file passi la staffetta al successivo, che immediatamente provvederà alla sua chiusura e al proseguimento dei lavori... Grazie assai, buon pomeriggio eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, chiedo scusa per il mio solito "ermetismo serpeggiante"... :-)) La sequenza è questa: prima dell'End Sub dell'ultima macro eseguita nel file Workbook1 ho dato istruzione di aprire il file Workbook2 Workbooks.Open Filename:= _ "C:\percorso\Workbook2.xlsm" All'apertura di Workbook2 si esegue la sub Private Sub Workbook_Open() Workbooks("Workbook1.xlsm").Activate ActiveWorkbook.Close savechanges:=False Workbooks("Workbook2.xlsm").Activate Call Macro1 End Sub La sequenza viene eseguita regolarmente, ma non viene eseguita la Macro1 Non viene restituito nessun Errore, e per eseguire la Macro1 devo procedere manualmente dal menù Macro > Esegui, ma il mio intento è quello di automatizzare la sequenza operativa in modo che ogni file passi la staffetta al successivo, che immediatamente provvederà alla sua chiusura e al proseguimento dei lavori... Grazie assai, buon pomeriggio eZio Salve è una questione di logica. la macro che concatena tutto il processo la lanci dal workbook1 se nell'evento open la prima istruzione è quella di chiudere la cartella che sta eseguendo la macro, questa si ferma non appena l'istruzione viene eseguita. dovrai cambiare in questo modo: Private Sub Workbook_Open() Call Macro1 End Sub mentre la macro descritta nel modulo : Sub macro1() With ActiveWorkbook ' quello che deve fare la macro End With ' poi chiudi la cartella Workbooks("Workbook1.xlsm").Close SaveChanges:=False End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, seguendo le tue indicazioni tutto funziona perfettamente... ;-)) a10n11 ha scritto:la macro che concatena tutto il processo la lanci dal workbook1 se nell'evento open la prima istruzione è quella di chiudere la cartella che sta eseguendo la macro, questa si ferma non appena l'istruzione viene eseguita. la sub dell'evento open è nel secondo file, quello che è stato appena aperto, mentre la cartella da chiudere è il primo file che ha già "passato la palla" al secondo, avendo terminato di fatto tutti i lavori non appena si è aperto il secondo file. Grazie assai, buona serata eZio.
|
|
Guest |