Davide ha diverse cartelle di lavoro che hanno al loro interno diversi fogli di lavoro. Vorrebbe combinare un determinato foglio di lavoro (solo uno) da ciascuna di queste cartelle di lavoro in una nuova cartella di lavoro. Sa come farlo manualmente usando Sposta o Copia foglio, ma vorrebbe un modo per farlo in modo più automatico, soprattutto perché potrebbero esserci molte cartelle di lavoro che deve “combinare” in questo modo.
Esistono diversi modi per affrontare questo problema e tutti implicano l’uso di macro (questo non dovrebbe sorprendere: le macro sono progettate per svolgere rapidamente noiose attività manuali).
La seguente macro è semplice nel design: scorre tutte le cartelle di lavoro attualmente aperte e per ogni cartella di lavoro (tranne la cartella di lavoro che contiene la macro) copia il foglio denominato “Foglio1” da quella cartella di lavoro alla cartella di lavoro contenente il codice.
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Se vuoi che la macro prenda un foglio di lavoro diverso da Foglio1, cambia semplicemente il valore della variabile sWksName per riflettere il nome del foglio di lavoro desiderato. Se non sai quale sarà il nome del foglio di lavoro, ma sai che il foglio di lavoro da copiare sarà sempre il secondo foglio di lavoro in ogni cartella di lavoro, puoi utilizzare questa variazione sulla macro:
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Forse il più grande svantaggio degli approcci finora esposti è che tutte le cartelle di lavoro devono essere aperte. Questo potrebbe non essere sempre fattibile. Ad esempio, potresti avere un centinaio di cartelle di lavoro diverse in una cartella e devi combinare un foglio di lavoro da ciascuna di esse. Aprire un centinaio di cartelle di lavoro, sebbene tecnicamente possibile, probabilmente non è pratico per la maggior parte delle persone. In tal caso è necessario adottare un approccio diverso.
La seguente macro, CombineSheets, è di natura interattiva. Ti chiede diverse informazioni, quindi aggiunge fogli di lavoro alla cartella di lavoro in base alle tue risposte. Prima richiede un percorso per i fogli di lavoro (non includere la barra finale) e quindi uno schema da utilizzare per le cartelle di lavoro. È possibile specificare uno schema di cartella di lavoro utilizzando i normali caratteri jolly asterisco (*) e punto interrogativo (?). Ad esempio, uno schema * corrisponderebbe a tutte le cartelle di lavoro, mentre un modello Budget20?? restituirebbe solo le cartelle di lavoro che hanno “Budget20” all’inizio e due caratteri qualsiasi dopo.
Questo contenuto è riservato agli abbonati
Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.
Se sei già abbonato Accedi per sbloccare il contenuto!
In caso contrario abbonati qui! L'abbonamento è conveniente.
E puoi interromperlo in ogni momento e in completa autonomia.
(puoi renderti conto di quanti siano i contenuti riservati
raggiungendo questa pagina)
Quando esegui la macro ti viene chiesto anche il nome di un foglio di lavoro da copiare da ogni cartella di Excel corrispondente. Fornisci un nome e, se tale foglio di lavoro esiste nella cartella di lavoro, esso verrà copiato all’inizio della cartella di lavoro corrente.