VBA che lavora con le cartelle di lavoro (l'oggetto cartella di lavoro)

Questa guida ti introdurrà a lavorare con il Oggetto cartella di lavoro in VBA.

L'oggetto della cartella di lavoro

Innanzitutto, per interagire con le cartelle di lavoro in VBA, è necessario comprendere il Oggetto cartella di lavoro.

Con l'oggetto cartella di lavoro, puoi fare riferimento alle cartelle di lavoro con il loro nome in questo modo:

1 Cartelle di lavoro("Book2.xlsm").Attiva

Tuttavia, questo codice funzionerà solo se la cartella di lavoro è aperta. Se la cartella di lavoro è chiusa, dovrai fornire il percorso completo della cartella di lavoro:

1 Cartelle di lavoro.Apri ("C:\Utenti\StevePC2\Download\book2.xlsm")

Invece di digitare il percorso completo, se la cartella di lavoro desiderata si trova nella stessa directory della cartella di lavoro in cui è archiviato il codice, è possibile utilizzare questo codice di riga per aprire la cartella di lavoro:

1 Cartelle di lavoro.Apri (ThisWorkbook.Path & "\book2.xlsm")

Questo fa uso dell'oggetto ThisWorkbook di cui parleremo nella prossima sezione.

Numero indice cartella di lavoro

Infine, puoi fare riferimento alle cartelle di lavoro in base al loro "Numero indice". Il numero di indice di una cartella di lavoro corrisponde all'ordine in cui è stata aperta la cartella di lavoro (tecnicamente è la posizione della cartella di lavoro nella raccolta cartelle di lavoro).

1 Cartelle di lavoro(1).Attiva

Questo è utile se vuoi fare qualcosa come chiudere la prima (o l'ultima) cartella di lavoro aperta.

Attiva cartella di lavoro, cartella di lavoro attiva e questa cartella di lavoro

Se una cartella di lavoro è NON ATTIVO, puoi accedere agli oggetti della cartella di lavoro in questo modo:

1 Cartelle di lavoro("Libro2.xlsm").Fogli("Foglio1").Intervallo("A1").valore = 1

Tuttavia, se la cartella di lavoro è attiva, puoi omettere l'oggetto cartella di lavoro:

1 Fogli("Foglio1").Intervallo("A1").valore = 1

E se vuoi interagire con il foglio attivo della cartella di lavoro, puoi anche omettere l'oggetto fogli:

1 Intervallo ("A1"). valore = 1

Attiva cartella di lavoro

Per attivare una cartella di lavoro, utilizzare il Attiva metodo.

1 Cartelle di lavoro ("Book2.xlsm"). Attiva

Ora puoi interagire con gli oggetti di Book2 senza indicare esplicitamente il nome della cartella di lavoro.

Cartella di lavoro attiva

Il Cartella di lavoro attiva l'oggetto fa sempre riferimento alla cartella di lavoro attiva. Ciò è utile se desideri assegnare l'ActiveWorkbook a una variabile da utilizzare in seguito.

12 Dim wb come cartella di lavoroImposta wb = ActiveWorkbook

Questa cartella di lavoro

Il Questa cartella di lavoro oggetto fa sempre riferimento alla cartella di lavoro in cui è archiviato il codice in esecuzione. Per attivare ThisWorkbook, usa questa riga di codice:

1 ThisWorkbook.Attiva

Apri cartella di lavoro

Per aprire una cartella di lavoro, utilizzare il Metodo aperto:

1 Cartelle di lavoro.Apri ("C:\Utenti\StevePC2\Download\book2.xlsm")

La cartella di lavoro appena aperta diventerà sempre la Cartella di lavoro attiva, permettendoti di interagire facilmente con esso.

1 ActiveWorkbook.Salva

Il metodo Open ha molti altri argomenti, che ti consentono di aprire in sola lettura, aprire una cartella di lavoro protetta da password e altro ancora. È trattato qui nel nostro articolo sull'apertura/chiusura delle cartelle di lavoro.

Apri e assegna a variabile

Puoi anche aprire una cartella di lavoro e assegnarla a una variabile contemporaneamente:

12 Dim wb come cartella di lavoroImposta wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm")

Finestra di dialogo Apri file

Puoi anche attivare la finestra di dialogo Apri file in questo modo:

12345678 Sotto OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename()Cartelle di lavoro.Apri (strFile)Fine sottotitolo

Crea nuova (Aggiungi) cartella di lavoro

Questa riga di codice creerà una nuova cartella di lavoro:

1 Cartelle di lavoro.Aggiungi

La nuova cartella di lavoro ora diventa la Cartella di lavoro attiva, permettendoti di interagire con esso (es. salvare la nuova cartella di lavoro).

Aggiungi nuova cartella di lavoro alla variabile

Puoi anche aggiungere una nuova cartella di lavoro direttamente a una variabile:

12 Dim wb come cartella di lavoroImposta wb = Cartelle di lavoro.Aggiungi

Chiudi cartella di lavoro

Chiudi e salva

Per chiudere una cartella di lavoro con il salvataggio, utilizzare il Chiudi metodo insieme a Salvare le modifiche impostato su VERO:

1 ActiveWorkbook.Close SaveChanges:=True

Chiudi senza salvare

Per chiudere senza salvare, impostare Salvare le modifiche uguale a FALSO:

1 ActiveWorkbook.Close SaveChanges:=False

Cartella di lavoro Salva con nome

Il Metodo Salva con nome viene utilizzato per salvare una cartella di lavoro come.

Per salvare una cartella di lavoro con un nuovo nome, nella stessa directory, puoi implicare l'uso di questo:

1 ActiveWorkbook.Salva come "nuovo"

dove "nuovo" è il nuovo nome del file.

Per salvare una cartella di lavoro in una nuova directory con un'estensione di file specifica, è sufficiente specificare la nuova directory e il nome del file:

1 ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm"

Altri esempi di cartelle di lavoro VBA

Nome cartella di lavoro

Per ottenere il nome di una cartella di lavoro:

1 MsgBox ActiveWorkbook.Name

Proteggi cartella di lavoro

Per proteggere la struttura della cartella di lavoro dalla modifica, è possibile utilizzare il Metodo di protezione (password facoltativa):

1 Cartelle di lavoro ("book1.xlsm"). Proteggi "password"

Per rimuovere la protezione di una cartella di lavoro, utilizzare il pulsante Metodo non protetto:

1 Cartelle di lavoro ("book1.xlsm"). Annulla protezione "password"

Passa attraverso tutte le cartelle di lavoro aperte

Per scorrere tutte le cartelle di lavoro aperte:

123456789 Sub LoopThroughWBs()Dim wb come cartella di lavoroPer ogni wb nelle cartelle di lavoroMsgBox wb.Nomewb successivoFine sottotitolo

Cartella di lavoro Attiva evento

Puoi eseguire del codice ogni volta che viene aperta una cartella di lavoro specifica con il Evento aperto cartella di lavoro.

Inserisci questa procedura nel modulo ThisWorkbook della tua cartella di lavoro:

123 Cartella di lavoro secondaria privata_Apri()Fogli("foglio1").AttivaFine sottotitolo

Questa procedura si attiverà Foglio1 ogni volta che si apre la cartella di lavoro.

wave wave wave wave wave