In questo tutorial imparerai come utilizzare VBA per aprire e chiudere la cartella di lavoro di Excel in diversi modi.
VBA consente di aprire o chiudere i file utilizzando i metodi standard .Aprire e .Chiudere.
Se vuoi imparare come verificare se un file esiste prima di tentare di aprire il file, puoi fare clic su questo link: Esiste un file VBA
Apri una cartella di lavoro in VBA
Apri cartella di lavoro dal percorso
Se sai quale file vuoi aprire, puoi specificare il suo percorso completo nella funzione. Ecco il codice:
1 | Cartelle di lavoro.Apri "C:\Cartella VBA\File di esempio 1.xlsx" |
Questa riga del codice apre il file "File di esempio 1" dalla "Cartella VBA".
Apri cartella di lavoro - Cartella di lavoro attiva
Quando apri una cartella di lavoro, diventa automaticamente la cartella di lavoro attiva. Puoi fare riferimento alla cartella di lavoro appena aperta in questo modo:
1 | ActiveWorkbook.Salva |
Quando fai riferimento a un foglio o un intervallo e ometti il nome della cartella di lavoro, VBA presumerà che ti riferisci a ActiveWorkbook:
1 | Fogli("Foglio1").Nome = "Inserimento" |
Apri cartella di lavoro e assegna a una variabile
Puoi anche aprire una cartella di lavoro e assegnarla direttamente a una variabile oggetto. Questa procedura aprirà una cartella di lavoro per il wb variabile e quindi salvare la cartella di lavoro.
123456 | Sub OpenWorkbookToVariable()Dim wb come cartella di lavoroImposta wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx")wb.SalvaFine sottotitolo |
L'assegnazione di cartelle di lavoro alle variabili quando si aprono è il modo migliore per tenere traccia delle cartelle di lavoro
Finestra di dialogo Apri file cartella di lavoro
È inoltre possibile attivare la finestra di dialogo Apri file della cartella di lavoro. Ciò consente all'utente di accedere a un file e aprirlo:
12345678 | Sotto OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename()Cartelle di lavoro.Apri (strFile)Fine sottotitolo |
Come puoi vedere nell'immagine 1, con questo approccio gli utenti possono scegliere quale file aprire. La finestra di dialogo Apri file può essere fortemente personalizzata. Puoi impostare per impostazione predefinita una determinata cartella, scegliere quali tipi di file sono visibili (es… solo xlsx) e altro ancora. Leggi il nostro tutorial sulla finestra di dialogo Apri file per esempi dettagliati.
Apri nuova cartella di lavoro
Questa riga di codice aprirà una nuova cartella di lavoro:
1 | Cartelle di lavoro.Aggiungi |
Apri nuova cartella di lavoro in variabile
Questa procedura aprirà una nuova cartella di lavoro, assegnandola alla variabile wb:
1234 | Sotto ApriNuova cartella di lavoro()Dim wb come cartella di lavoroImposta wb = Cartelle di lavoro.AggiungiFine sottotitolo |
Sintassi della cartella di lavoro aperta
Quando usi Workbooks.Open potresti notare che ci sono molte opzioni disponibili quando apri la cartella di lavoro:
Il nome del file è obbligatorio. Tutti gli altri argomenti sono facoltativi e probabilmente non avrai bisogno di conoscere la maggior parte degli altri argomenti. Ecco i due più comuni:
Apri cartella di lavoro in sola lettura
Quando la cartella di lavoro è aperta in sola lettura, non è possibile salvare sul file originale. Ciò impedisce che il file venga modificato dall'utente.
1 | Cartelle di lavoro.Apri "C:\VBA Folder\Sample file 1.xlsx", , True |
Apri cartella di lavoro protetta da password
Una cartella di lavoro potrebbe essere protetta da password. Usa questo codice per aprire la cartella di lavoro protetta da password:
1 | Cartelle di lavoro.Apri "C:\VBA Folder\Sample file 1.xlsx", , , "password" |
Apri note sulla sintassi della cartella di lavoro
Nota che nell'immagine sopra, abbiamo incluso una parentesi "(" per mostrare la sintassi. Se usi la parentesi quando lavori con Workbooks.Open, devi assegnare la cartella di lavoro a una variabile:
1234 | Sotto OpenWB()Dim wb come cartella di lavoroSet wb = Workbooks.Open("C:\VBA Folder\Sample file 1.xlsx", True, True)Fine sottotitolo |
Chiudi una cartella di lavoro in VBA
Chiudi cartella di lavoro specifica
Analogamente all'apertura di una cartella di lavoro, esistono diversi modi per chiudere un file. Se sai quale file vuoi chiudere, puoi usare il seguente codice:
1 | Cartelle di lavoro.Chiudi ("C:\Cartella VBA\File di esempio 1.xlsx") |
Questa riga di codice chiude il file "File di esempio 1" se è aperto. In caso contrario, restituirà un errore, quindi dovresti occuparti della gestione degli errori.
Chiudi cartella di lavoro attiva
Se vuoi chiudere la cartella di lavoro attualmente attiva, questa riga di codice ti consentirà di farlo:
1 | ActiveWorkbook.Chiudi |
Chiudi tutte le cartelle di lavoro aperte
Per chiudere tutte le cartelle di lavoro aperte, puoi semplicemente utilizzare questo codice:
1 | Cartelle di lavoro.Chiudi |
Chiudi la prima cartella di lavoro aperta
Questo chiuderà la prima cartella di lavoro aperta/creata:
1 | Cartelle di lavoro(1).Chiudi |
Sostituisci 1 con 2 per chiudere la seconda cartella di lavoro aperta/creata e così via.
Chiudi senza salvare
Questo chiuderà una cartella di lavoro senza salvare e senza mostrare la richiesta di salvataggio:
1 | ActiveWorkbook.Close savechanges:=False |
Salva e chiudi senza prompt
Allo stesso modo, questo salverà e chiuderà una cartella di lavoro senza mostrare il prompt di salvataggio:
1 | ActiveWorkbook.Close savechanges:=True |
Nota: ci sono molti altri modi per indicare se salvare o meno una cartella di lavoro e anche se mostrare o meno i prompt. Questo è discusso in modo più dettagliato qui.
Altri esempi di cartella di lavoro aperta
Apri più nuove cartelle di lavoro
Questa procedura aprirà più nuove cartelle di lavoro, assegnando le nuove cartelle di lavoro a un array:
12345678 | Sub OpenMultipleNewWorkbooks()Dim arrWb(3) come cartella di lavoroDim i As IntegerPer i = da 1 a 3Imposta arrWb(i) = Cartelle di lavoro.AggiungiAvanti ioFine sottotitolo |
Apri tutte le cartelle di lavoro di Excel in una cartella
Questa procedura aprirà tutte le cartelle di lavoro di Excel in una cartella, utilizzando il selettore della finestra di dialogo Apri file.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder()Dim wb come cartella di lavoroDim dlgFD As FileDialogDim strFolder As StringDim strFileName As StringImposta dlgFD = Application.FileDialog(msoFileDialogFolderPicker)Se dlgFD.Show = -1 AllorastrFolder = dlgFD.SelectedItems(1) & Application.PathSeparatorstrFileName = Dir(strFolder & "*.xls*")Do While strFileName ""Imposta wb = Workbooks.Open(strFolder & strFileName)strFileName = DirCiclo continuoFinisci seFine sottotitolo |
Controlla se una cartella di lavoro è aperta
Questa procedura verificherà se una cartella di lavoro è aperta:
1234567891011 | Sub TestByWorkbookName()Dim wb come cartella di lavoroPer ogni wb nelle cartelle di lavoroSe wb.Name = "Nuovo foglio di lavoro Microsoft Excel.xls" AlloraMsgBox "Trovato"Esci Sub 'chiama il codice qui, usciremo solo per oraFinisci seProssimoFine sottotitolo |
Cartella di lavoro_Evento aperto
Gli eventi VBA sono "trigger" che indicano a VBA di eseguire un determinato codice. È possibile impostare eventi della cartella di lavoro per l'apertura, la chiusura, prima del salvataggio, dopo il salvataggio e altro ancora.
Leggi il nostro tutorial Workbook_Open Event per saperne di più sull'esecuzione automatica delle macro all'apertura di una cartella di lavoro.