Utilizzo dell'oggetto cartella di lavoro in Excel VBA (Apri, Chiudi, Salva, Imposta)

In questo tutorial, tratterò come lavorare con le cartelle di lavoro in Excel utilizzando VBA.

In Excel, una "cartella di lavoro" è un oggetto che fa parte della raccolta "cartelle di lavoro". All'interno di una cartella di lavoro, sono presenti diversi oggetti come fogli di lavoro, fogli grafici, celle e intervalli, oggetti grafici, forme, ecc.

Con VBA, puoi fare molte cose con un oggetto cartella di lavoro, come aprire una cartella di lavoro specifica, salvare e chiudere cartelle di lavoro, creare nuove cartelle di lavoro, modificare le proprietà della cartella di lavoro, ecc.

Quindi iniziamo.

Tutti i codici che menziono in questo tutorial devono essere inseriti nell'editor di Visual Basic. Vai alla sezione "Dove inserire il codice VBA" per sapere come funziona.

Se sei interessato a imparare VBA nel modo più semplice, dai un'occhiata a my Formazione online su VBA di Excel.

Fare riferimento a una cartella di lavoro utilizzando VBA

Esistono diversi modi per fare riferimento a un oggetto Workbook in VBA. Il metodo che scegli dipende da ciò che vuoi ottenere. In questa sezione, tratterò i diversi modi per fare riferimento a una cartella di lavoro insieme ad alcuni codici di esempio.

Utilizzo dei nomi delle cartelle di lavoro

Se si dispone del nome esatto della cartella di lavoro a cui si desidera fare riferimento, è possibile utilizzare il nome nel codice.

Cominciamo con un semplice esempio.

Se hai due cartelle di lavoro aperte e desideri attivare la cartella di lavoro con il nome - Examples.xlsx, puoi utilizzare il codice seguente:

Sub ActivateWorkbook() Workbooks("Examples.xlsx").Attiva End Sub

Nota che è necessario utilizzare il nome del file insieme all'estensione se il file è stato salvato. Se non è stato salvato, puoi utilizzare il nome senza l'estensione del file.

Se non sei sicuro di quale nome usare, chiedi aiuto a Project Explorer.

Se vuoi attivare una cartella di lavoro e selezionare una cella specifica in un foglio di lavoro in quella cartella di lavoro, devi fornire l'intero indirizzo della cella (inclusi la cartella di lavoro e il nome del foglio di lavoro).

Sub ActivateWorkbook() Workbooks("Examples.xlsx").Worksheets("Sheet1").Activate Range("A1").Select End Sub

Il codice sopra attiva prima Sheet1 nella cartella di lavoro Examples.xlsx e quindi seleziona la cella A1 nel foglio.

Vedrai spesso un codice in cui viene fatto un riferimento a un foglio di lavoro o a una cella/intervallo senza fare riferimento alla cartella di lavoro. Ciò accade quando ti riferisci al foglio di lavoro / agli intervalli nella stessa cartella di lavoro che contiene il codice ed è anche la cartella di lavoro attiva. Tuttavia, in alcuni casi, è necessario specificare la cartella di lavoro per assicurarsi che il codice funzioni (maggiori informazioni su questo nella sezione ThisWorkbook).

Utilizzo dei numeri indice

Puoi anche fare riferimento alle cartelle di lavoro in base al loro numero di indice.

Ad esempio, se hai tre cartelle di lavoro aperte, il codice seguente ti mostrerà i nomi delle tre cartelle di lavoro in una finestra di messaggio (uno alla volta).

Sub WorkbookName() MsgBox Workbooks(1).Name MsgBox Workbooks(2).Name MsgBox Workbooks(3).Name End Sub

Il codice sopra utilizza MsgBox, che è una funzione che mostra una finestra di messaggio con il testo/valore specificato (che in questo caso è il nome della cartella di lavoro).

Uno dei problemi che ho spesso con l'utilizzo dei numeri di indice con le cartelle di lavoro è che non si sa mai quale sia la prima cartella di lavoro e quale sia la seconda e così via. Per essere sicuri, dovresti eseguire il codice come mostrato sopra o qualcosa di simile per scorrere le cartelle di lavoro aperte e conoscere il loro numero di indice.

Excel considera la cartella di lavoro aperta per prima per avere il numero di indice come 1 e il successivo come 2 e così via.

Nonostante questo inconveniente, l'uso dei numeri indice può tornare utile. Ad esempio, se desideri scorrere tutte le cartelle di lavoro aperte e salvarle tutte, puoi utilizzare i numeri di indice. In questo caso, poiché vuoi che ciò accada a tutte le cartelle di lavoro, non sei preoccupato per i loro numeri di indice individuali.

Il codice seguente scorrerà tutte le cartelle di lavoro aperte e chiuderà tutte tranne la cartella di lavoro che ha questo codice VBA.

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Step -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Close End If Next i End Sub

Il codice precedente conta il numero di cartelle di lavoro aperte e quindi esamina tutte le cartelle di lavoro utilizzando il ciclo For Each.

Utilizza la condizione IF per verificare se il nome della cartella di lavoro è uguale a quello della cartella di lavoro in cui viene eseguito il codice.

Se non è una corrispondenza, chiude la cartella di lavoro e passa a quella successiva.

Nota che abbiamo eseguito il ciclo da WbCount a 1 con un passo di -1. Questo viene fatto come con ogni ciclo, il numero di cartelle di lavoro aperte sta diminuendo.

Questa cartella di lavoro è trattata in dettaglio nella sezione successiva.

Utilizzo di ActiveWorkbook

ActiveWorkbook, come suggerisce il nome, si riferisce alla cartella di lavoro attiva.

Il codice seguente ti mostrerebbe il nome della cartella di lavoro attiva.

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name End Sub

Quando si utilizza VBA per attivare un'altra cartella di lavoro, la parte ActiveWorkbook nel VBA inizierà a fare riferimento alla cartella di lavoro attivata.

Ecco un esempio di questo.

Se hai una cartella di lavoro attiva e inserisci il seguente codice in essa ed eseguila, mostrerà prima il nome della cartella di lavoro che ha il codice e poi il nome di Examples.xlsx (che viene attivato dal codice).

Sub ActiveWorkbookName() MsgBox ActiveWorkbook.Name Workbooks("Examples.xlsx").Attiva MsgBox ActiveWorkbook.Name End Sub

Tieni presente che quando crei una nuova cartella di lavoro utilizzando VBA, la cartella di lavoro appena creata diventa automaticamente la cartella di lavoro attiva.

Utilizzo di questa cartella di lavoro

ThisWorkbook si riferisce alla cartella di lavoro in cui viene eseguito il codice.

Ogni cartella di lavoro avrebbe un oggetto ThisWorkbook come parte di essa (visibile in Esplora progetti).

"ThisWorkbook" può memorizzare macro regolari (simili a quelle che aggiungiamo ai moduli) e procedure di evento. Una procedura evento è qualcosa che viene attivato in base a un evento, ad esempio facendo doppio clic su una cella, salvando una cartella di lavoro o attivando un foglio di lavoro.

Qualsiasi procedura evento salvata in questa "Questa cartella di lavoro" sarebbe disponibile nell'intera cartella di lavoro, rispetto agli eventi a livello di foglio che sono limitati solo ai fogli specifici.

Ad esempio, se fai doppio clic sull'oggetto ThisWorkbook in Esplora progetti e copia e incolla il codice sottostante, mostrerà l'indirizzo della cella ogni volta che fai doppio clic su una delle celle dell'intera cartella di lavoro.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) MsgBox Target.Address End Sub

Sebbene il ruolo principale di ThisWorkbook sia quello di memorizzare la procedura dell'evento, puoi anche utilizzarlo per fare riferimento alla cartella di lavoro in cui viene eseguito il codice.

Il codice seguente restituirebbe il nome della cartella di lavoro in cui viene eseguito il codice.

Sub ThisWorkbookName() MsgBox ThisWorkbook.Name End Sub

Il vantaggio dell'utilizzo di ThisWorkbook (su ActiveWorkbook) è che farebbe riferimento alla stessa cartella di lavoro (quella che contiene il codice) in tutti i casi. Quindi, se usi un codice VBA per aggiungere una nuova cartella di lavoro, ActiveWorkbook cambierebbe, ma ThisWorkbook farebbe comunque riferimento a quello che ha il codice.

Creazione di un nuovo oggetto cartella di lavoro

Il codice seguente creerà una nuova cartella di lavoro.

Sub CreateNewWorkbook() Workbooks.Add End Sub

Quando aggiungi una nuova cartella di lavoro, questa diventa la cartella di lavoro attiva.

Il codice seguente aggiungerà una nuova cartella di lavoro e quindi ti mostrerà il nome di quella cartella di lavoro (che sarebbe il nome del tipo Book1 predefinito).

Sub CreateNewWorkbook() Workbooks.Add MsgBox ActiveWorkbook.Name End Sub

Apri una cartella di lavoro usando VBA

È possibile utilizzare VBA per aprire una cartella di lavoro specifica quando si conosce il percorso del file della cartella di lavoro.

Il codice seguente aprirà la cartella di lavoro - Examples.xlsx che si trova nella cartella Documenti sul mio sistema.

Sub OpenWorkbook() Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") End Sub

Nel caso in cui il file esista nella cartella predefinita, che è la cartella in cui VBA salva i nuovi file per impostazione predefinita, puoi semplicemente specificare il nome della cartella di lavoro, senza l'intero percorso.

Sub OpenWorkbook() Workbooks.Open ("Esempi.xlsx") End Sub

Nel caso in cui la cartella di lavoro che stai tentando di aprire non esista, vedrai un errore.

Per evitare questo errore, puoi aggiungere alcune righe al tuo codice per verificare prima se il file esiste o meno e se esiste quindi prova ad aprirlo.

Il codice seguente controllerà la posizione del file e, se non esiste, mostrerà un messaggio personalizzato (non il messaggio di errore):

Sub OpenWorkbook() If Dir("C:\Users\sumit\Documents\Examples.xlsx") "" Then Workbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx") Else MsgBox "Il file non "non esiste" End If End Sub

È inoltre possibile utilizzare la finestra di dialogo Apri per selezionare il file che si desidera aprire.

Sub OpenWorkbook() In caso di errore Riprendi successivo Dim FilePath As String FilePath = Application.GetOpenFilename Workbooks.Open (FilePath) End Sub

Il codice sopra apre la finestra di dialogo Apri. Quando selezioni un file che vuoi aprire, assegna il percorso del file alla variabile FilePath. Workbooks.Open utilizza quindi il percorso del file per aprire il file.

Nel caso in cui l'utente non apra un file e faccia clic sul pulsante Annulla, FilePath diventa False. Per evitare di ricevere un errore in questo caso, abbiamo utilizzato l'istruzione "On Error Resume Next".

Relazionato: Scopri tutto sulla gestione degli errori in Excel VBA

Salvare una cartella di lavoro

Per salvare la cartella di lavoro attiva, utilizzare il codice seguente:

Sub SaveWorkbook() ActiveWorkbook.Save End Sub

Questo codice funziona per le cartelle di lavoro che sono già state salvate in precedenza. Inoltre, poiché la cartella di lavoro contiene la macro sopra, se non è stata salvata come file .xlsm (o .xls), perderai la macro quando la aprirai successivamente.

Se stai salvando la cartella di lavoro per la prima volta, ti mostrerà un prompt come mostrato di seguito:

Quando si salva per la prima volta, è meglio utilizzare l'opzione "Salva con nome".

Il codice seguente salverebbe la cartella di lavoro attiva come file .xlsm nella posizione predefinita (che è la cartella dei documenti nel mio sistema).

Sub SaveWorkbook() ActiveWorkbook.SaveAs Filename:="Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Se vuoi che il file venga salvato in una posizione specifica, devi menzionarlo nel valore Nome file. Il codice seguente salva il file sul mio desktop.

Sub SaveWorkbook() ActiveWorkbook.SaveAs Filename:="C:\Users\sumit\Desktop\Test.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Se si desidera che l'utente ottenga l'opzione per selezionare la posizione in cui salvare il file, è possibile chiamare la finestra di dialogo Salva con nome. Il codice seguente mostra la finestra di dialogo Salva con nome e consente all'utente di selezionare la posizione in cui salvare il file.

Sub SaveWorkbook() Dim FilePath As String FilePath = Application.GetSaveAsFilename ActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled End Sub

Nota che invece di usare FileFormat:=xlOpenXMLWorkbookMacroEnabled, puoi anche usare FileFormat:=52, dove 52 è il codice xlOpenXMLWorkbookMacroEnabled.

Salvataggio di tutte le cartelle di lavoro aperte

Se hai più di una cartella di lavoro aperta e desideri salvare tutte le cartelle di lavoro, puoi utilizzare il codice seguente:

Sub SaveAllWorkbooks() Dim wb as workbook for each wb in Workbooks wb.Save Next wb End Sub

Quanto sopra salva tutte le cartelle di lavoro, comprese quelle che non sono mai state salvate. Le cartelle di lavoro che non sono state salvate in precedenza verrebbero salvate nella posizione predefinita.

Se desideri salvare solo quelle cartelle di lavoro che sono state precedentemente salvate, puoi utilizzare il codice seguente:

Sub SaveAllWorkbooks() Dim wb as workbook for each wb in workbooks If wb.Path "" Then wb.Save End If Next wb End Sub

Salvataggio e chiusura di tutte le cartelle di lavoro

Se vuoi chiudere tutte le cartelle di lavoro, ad eccezione della cartella di lavoro che contiene il codice corrente, puoi utilizzare il codice seguente:

Sub CloseandSaveWorkbooks() Dim wb as workbook for each wb in workbooks If wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Il codice sopra chiuderebbe tutte le cartelle di lavoro (eccetto la cartella di lavoro che ha il codice - ThisWorkbook). In caso di modifiche in queste cartelle di lavoro, le modifiche verranno salvate. Nel caso in cui ci sia una cartella di lavoro che non è mai stata salvata, mostrerà la finestra di dialogo Salva come.

Salva una copia della cartella di lavoro (con timestamp)

Quando lavoro con dati complessi e dashboard nelle cartelle di lavoro di Excel, spesso creo versioni diverse delle mie cartelle di lavoro. Questo è utile nel caso qualcosa vada storto con la mia cartella di lavoro attuale. Ne avrei almeno una copia salvata con un nome diverso (e perderei solo il lavoro che ho fatto dopo aver creato una copia).

Ecco il codice VBA che creerà una copia della cartella di lavoro e la salverà nella posizione specificata.

Sub CreateaCopyofWorkbook() ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy.xlsm" End Sub

Il codice sopra salverebbe una copia della cartella di lavoro ogni volta che esegui questa macro.

Anche se funziona alla grande, mi sentirei più a mio agio se avessi diverse copie salvate ogni volta che eseguo questo codice. Il motivo per cui è importante è che se commetto un errore involontario ed eseguo questa macro, salverà il lavoro con gli errori. E non avrei avuto accesso al lavoro prima di aver commesso l'errore.

Per gestire tali situazioni, puoi utilizzare il codice seguente che salva una nuova copia del lavoro ogni volta che lo salvi. E aggiunge anche una data e un timestamp come parte del nome della cartella di lavoro. Questo può aiutarti a tenere traccia di qualsiasi errore che hai fatto poiché non perdi mai nessuno dei backup creati in precedenza.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ThisWorkbook.SaveCopyAs Filename:="C:\Users\sumit\Desktop\BackupCopy" & Format(Now(), "dd-mm-yy-hh-mm-ss -AMPM") e ".xlsm" End Sub

Il codice precedente creerebbe una copia ogni volta che si esegue questa macro e aggiunge un indicatore di data/ora al nome della cartella di lavoro.

Crea una nuova cartella di lavoro per ogni foglio di lavoro

In alcuni casi, potresti avere una cartella di lavoro con più fogli di lavoro e desideri creare una cartella di lavoro per ogni foglio di lavoro.

Questo potrebbe essere il caso quando si hanno rapporti mensili/trimestrali in una singola cartella di lavoro e si desidera suddividerli in una cartella di lavoro per ogni foglio di lavoro.

Oppure, se si dispone di rapporti saggi di dipartimento e si desidera suddividerli in singole cartelle di lavoro in modo da poter inviare queste singole cartelle di lavoro ai capi dipartimento.

Ecco il codice che creerà una cartella di lavoro per ogni foglio di lavoro, gli darà lo stesso nome del foglio di lavoro e lo salverà nella cartella specificata.

Sub CreateWorkbookforWorksheets() Dim ws As Worksheet Dim wb As Workbook For Each ws In ThisWorkbook.Worksheets Set wb = Workbooks.Add ws.Copy Before:=wb.Sheets(1) Application.DisplayAlerts = False wb.Sheets(2).Delete Application.DisplayAlerts = True wb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx" wb.Close Next ws End Sub

Nel codice sopra, abbiamo usato due variabili "ws" e "wb".

Il codice passa attraverso ogni foglio di lavoro (usando il ciclo For Each Next) e crea una cartella di lavoro per esso. Utilizza anche il metodo di copia dell'oggetto foglio di lavoro per creare una copia del foglio di lavoro nella nuova cartella di lavoro.

Nota che ho usato l'istruzione SET per assegnare la variabile "wb" a qualsiasi nuova cartella di lavoro creata dal codice.

È possibile utilizzare questa tecnica per assegnare un oggetto cartella di lavoro a una variabile. Questo è trattato nella sezione successiva.

Assegna oggetto cartella di lavoro a una variabile

In VBA, puoi assegnare un oggetto a una variabile e quindi utilizzare la variabile per fare riferimento a quell'oggetto.

Ad esempio, nel codice seguente, utilizzo VBA per aggiungere una nuova cartella di lavoro e quindi assegnare quella cartella di lavoro alla variabile wb. Per fare ciò, devo utilizzare l'istruzione SET.

Una volta assegnata la cartella di lavoro alla variabile, tutte le proprietà della cartella di lavoro vengono rese disponibili anche alla variabile.

Sub AssigntoVariable() Dim wb As Workbook Set wb = Workbooks.Add wb.SaveAs Filename:="C:\Users\sumit\Desktop\Examples.xlsx" End Sub

Si noti che il primo passaggio nel codice consiste nel dichiarare "wb" come variabile di tipo cartella di lavoro. Questo dice a VBA che questa variabile può contenere l'oggetto cartella di lavoro.

L'istruzione successiva utilizza SET per assegnare la variabile alla nuova cartella di lavoro che stiamo aggiungendo. Una volta eseguita questa assegnazione, possiamo usare la variabile wb per salvare la cartella di lavoro (o fare qualsiasi altra cosa con essa).

Ciclo attraverso cartelle di lavoro aperte

Abbiamo già visto alcuni esempi di codici sopra che utilizzavano il ciclo nel codice.

In questa sezione, spiegherò diversi modi per scorrere le cartelle di lavoro aperte utilizzando VBA.

Supponiamo che tu voglia salvare e chiudere tutte le cartelle di lavoro aperte, tranne quella con il codice al suo interno, quindi puoi utilizzare il codice seguente:

Sub CloseandSaveWorkbooks() Dim wb as workbook for each wb in workbooks If wb.Name ThisWorkbook.Name Then wb.Close SaveChanges:=True End If Next wb End Sub

Il codice sopra usa il ciclo For Each per passare attraverso ogni cartella di lavoro nella raccolta Workbooks. Per fare ciò, dobbiamo prima dichiarare "wb" come variabile del tipo di cartella di lavoro.

In ogni ciclo di ciclo, ogni nome della cartella di lavoro viene analizzato e se non corrisponde al nome della cartella di lavoro che ha il codice, viene chiuso dopo aver salvato il suo contenuto.

Lo stesso può essere ottenuto anche con un ciclo diverso come mostrato di seguito:

Sub CloseWorkbooks() Dim WbCount As Integer WbCount = Workbooks.Count For i = WbCount To 1 Step -1 If Workbooks(i).Name ThisWorkbook.Name Then Workbooks(i).Chiudi SaveChanges:=True End If Next i End Sub

Il codice sopra usa il ciclo For Next per chiudere tutte le cartelle di lavoro tranne quella che contiene il codice. In questo caso, non è necessario dichiarare una variabile della cartella di lavoro, ma è invece necessario contare il numero totale di cartelle di lavoro aperte. Quando abbiamo il conteggio, usiamo il ciclo For Next per esaminare ogni cartella di lavoro. Inoltre, in questo caso utilizziamo il numero di indice per fare riferimento alle cartelle di lavoro.

Nota che nel codice sopra, stiamo eseguendo il loop da WbCount a 1 con il passaggio -1. Ciò è necessario poiché con ogni ciclo, la cartella di lavoro viene chiusa e il numero di cartelle di lavoro viene ridotto di 1.

Errore durante l'utilizzo dell'oggetto cartella di lavoro (errore di runtime "9")

Uno degli errori più comuni che potresti riscontrare quando lavori con le cartelle di lavoro è - Errore di runtime "9" - Pedice fuori intervallo.

In genere, gli errori VBA non sono molto informativi e spesso lasciano a te il compito di capire cosa è andato storto.

Ecco alcuni dei possibili motivi che possono portare a questo errore:

  • La cartella di lavoro a cui stai tentando di accedere non esiste. Ad esempio, se sto cercando di accedere alla quinta cartella di lavoro utilizzando Workbooks(5) e ci sono solo 4 cartelle di lavoro aperte, otterrò questo errore.
  • Se stai usando un nome sbagliato per fare riferimento alla cartella di lavoro. Ad esempio, se il nome della cartella di lavoro è Examples.xlsx e usi Example.xlsx. quindi ti mostrerà questo errore.
  • Se non hai salvato una cartella di lavoro e utilizzi l'estensione, ricevi questo errore. Ad esempio, se il nome della cartella di lavoro è Book1 e si utilizza il nome Book1.xlsx senza salvarlo, verrà visualizzato questo errore.
  • La cartella di lavoro a cui stai tentando di accedere è chiusa.

Ottieni un elenco di tutte le cartelle di lavoro aperte

Se desideri ottenere un elenco di tutte le cartelle di lavoro aperte nella cartella di lavoro corrente (la cartella di lavoro in cui stai eseguendo il codice), puoi utilizzare il codice seguente:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). Attiva per i = 1 a wbcount Range ("A1"). Offset (i - 1, 0). Value = Workbooks(i).Name Next i End Sub

Il codice sopra aggiunge un nuovo foglio di lavoro e quindi elenca il nome di tutte le cartelle di lavoro aperte.

Se vuoi ottenere anche il percorso del file, puoi utilizzare il codice seguente:

Sub GetWorkbookNames() Dim wbcount As Integer wbcount = Workbooks.Count ThisWorkbook.Worksheets.Add ActiveSheet.Range ("A1"). Attiva per i = 1 a wbcount Range ("A1"). Offset (i - 1, 0). Value = Workbooks(i).Path & "\" & Workbooks(i).Name Next i End Sub

Apri la cartella di lavoro specificata facendo doppio clic sulla cella

Se disponi di un elenco di percorsi di file per le cartelle di lavoro di Excel, puoi utilizzare il codice seguente per fare semplicemente doppio clic sulla cella con il percorso del file e si aprirà quella cartella di lavoro.

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) Workbooks.Open Target.Value End Sub

Questo codice verrebbe inserito nella finestra del codice ThisWorkbook.

Per fare questo:

  • Fare doppio clic sull'oggetto ThisWorkbook in Esplora progetti. Si noti che l'oggetto ThisWorkbook dovrebbe trovarsi nella cartella di lavoro in cui si desidera questa funzionalità.
  • Copia e incolla il codice sopra.

Ora, se hai il percorso esatto dei file che desideri aprire, puoi farlo semplicemente facendo doppio clic sul percorso del file e VBA aprirà immediatamente quella cartella di lavoro.

Dove inserire il codice VBA

Ti chiedi dove va il codice VBA nella cartella di lavoro di Excel?

Excel ha un backend VBA chiamato editor VBA. Devi copiare e incollare il codice nella finestra del codice del modulo VB Editor.

Ecco i passaggi per farlo:

  1. Vai alla scheda Sviluppatore.
  2. Fare clic sull'opzione Visual Basic. Questo aprirà l'editor VB nel backend.
  3. Nel riquadro Project Explorer nell'editor VB, fare clic con il pulsante destro del mouse su qualsiasi oggetto per la cartella di lavoro in cui si desidera inserire il codice. Se non vedi Esplora progetti, vai alla scheda Visualizza e fai clic su Esplora progetti.
  4. Vai su Inserisci e fai clic su Modulo. Questo inserirà un oggetto modulo per la tua cartella di lavoro.
  5. Copia e incolla il codice nella finestra del modulo.

Potrebbero piacerti anche i seguenti tutorial VBA di Excel:

  • Come registrare una macro in Excel.
  • Creazione di una funzione definita dall'utente in Excel.
  • Come creare e utilizzare il componente aggiuntivo in Excel.
  • Come ripristinare le macro inserendole nella cartella di lavoro delle macro personali.
  • Ottieni l'elenco dei nomi di file da una cartella in Excel (con e senza VBA).
  • Come utilizzare la funzione InStr di Excel VBA (con ESEMPI pratici).
  • Come ordinare i dati in Excel utilizzando VBA (una guida passo passo).

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave