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.