Articles

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 disponibili diversi oggetti come fogli di lavoro, fogli di grafici, celle e intervalli, oggetti grafici, forme, ecc.

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

Quindi iniziamo.

Tutti i codici che ho citato in questo tutorial devono essere inseriti nell’editor di Visual Basic. Vai alla sezione “Dove mettere il codice VBA” per sapere come funziona.

Se sei interessato ad imparare VBA nel modo più semplice, dai un’occhiata alla mia formazione online Excel VBA.

Questo tutorial copre:

Fare riferimento a una cartella di lavoro utilizzando VBA

Ci sono diversi modi per fare riferimento a un oggetto Cartella di lavoro in VBA. Il metodo scelto dipenderà da ciò che si desidera ottenere fatto. 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 ha il nome esatto della cartella di lavoro a cui si desidera fare riferimento, è possibile utilizzare il nome nel codice.

Iniziamo con un semplice esempio.

Se si dispone di due cartelle di lavoro aperte e si desidera attivare la cartella di lavoro con il nome – Esempi.xlsx, è possibile utilizzare il seguente codice:

Sub ActivateWorkbook()Workbooks("Examples.xlsx").ActivateEnd Sub

Si noti che è necessario utilizzare il nome del file insieme all’estensione se il file è stato salvato. Se non è stato salvato, è possibile utilizzare il nome senza l’estensione del file.

Se non sei sicuro di quale nome usare, prendi l’aiuto di Project Explorer.

Worksheets Object in Excel VBA - file name in project explorer

Se si desidera attivare una cartella di lavoro e selezionare una cella specifica in un foglio di lavoro in quella cartella di lavoro, è necessario fornire l’intero indirizzo della cella (inclusa la cartella di lavoro e il nome del foglio di lavoro).

Sub ActivateWorkbook()Workbooks("Examples.xlsx").Worksheets("Sheet1").ActivateRange("A1").SelectEnd Sub

Il codice precedente attiva prima Sheet1 negli esempi.xlsx cartella di lavoro e quindi seleziona cella A1 nel foglio.

Vedrai spesso un codice in cui viene fatto un riferimento a un foglio di lavoro o una cella / intervallo senza fare riferimento alla cartella di lavoro. Ciò accade quando si fa riferimento al foglio di lavoro/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).

Utilizzando i numeri di indice

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

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

Sub WorkbookName()MsgBox Workbooks(1).NameMsgBox Workbooks(2).NameMsgBox Workbooks(3).NameEnd Sub

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

Uno dei problemi che ho spesso con l’utilizzo di numeri indice con cartelle di lavoro è che non si sa mai quale è la prima cartella di lavoro e quale è la seconda e così via. Per essere sicuri, dovresti eseguire il codice come mostrato sopra o qualcosa di simile a 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’utilizzo di numeri indice può tornare utile. Ad esempio, se si desidera scorrere tutte le cartelle di lavoro aperte e salvare tutto, è possibile utilizzare i numeri di indice. In questo caso, dal momento che vuoi che questo accada a tutte le cartelle di lavoro, non sei preoccupato per i loro singoli numeri di indice.

Il codice seguente scorrerebbe attraverso tutte le cartelle di lavoro aperte e chiuderebbe tutte tranne la cartella di lavoro che ha questo codice VBA.

Sub CloseWorkbooks()Dim WbCount As IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).CloseEnd IfNext iEnd Sub

Il codice precedente conta il numero di cartelle di lavoro aperte e quindi passa attraverso tutte le cartelle di lavoro usando il Per ogni ciclo.

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.

Si noti 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.

ThisWorkbook è trattato in dettaglio nella sezione successiva.

Utilizzando ActiveWorkbook

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

Il codice seguente mostra il nome della cartella di lavoro attiva.

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameEnd Sub

Quando si utilizza VBA per attivare un’altra cartella di lavoro, la parte ActiveWorkbook nel VBA dopo che inizierebbe 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 ed eseguilo, mostrerà prima il nome della cartella di lavoro che ha il codice e poi il nome degli esempi.xlsx (che viene attivato dal codice).

Sub ActiveWorkbookName()MsgBox ActiveWorkbook.NameWorkbooks("Examples.xlsx").ActivateMsgBox ActiveWorkbook.NameEnd Sub

Si noti che quando si crea una nuova cartella di lavoro utilizzando VBA, quella cartella di lavoro appena creata diventa automaticamente la cartella di lavoro attiva.

Utilizzando ThisWorkbook

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

Ogni cartella di lavoro avrebbe un oggetto ThisWorkbook come parte di esso (visibile in Project Explorer).

Workbook Object in VBA - ThisWorkbook

‘ThisWorkbook’ può memorizzare macro regolari (simili a quelle che aggiungiamo nei moduli) e procedure di eventi. Una procedura di evento è qualcosa che viene attivato in base a un evento – come doppio clic su una cella, o il salvataggio di una cartella di lavoro o l’attivazione di un foglio di lavoro.

Qualsiasi procedura di evento salvata in questo ‘ThisWorkbook’ 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 Project Explorer e copia-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.AddressEnd Sub

Mentre il ruolo principale di ThisWorkbook è quello di memorizzare la procedura degli eventi, puoi anche usarlo 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.NameEnd Sub

Il vantaggio di utilizzare ThisWorkbook (su ActiveWorkbook) è che si riferirebbe alla stessa cartella di lavoro (quella che ha il codice in esso) in tutti i casi. Quindi, se si utilizza un codice VBA per aggiungere una nuova cartella di lavoro, ActiveWorkbook cambierebbe, ma ThisWorkbook si riferirebbe comunque a quello che ha il codice.

Creazione di un nuovo oggetto Cartella di lavoro

Il seguente codice creerà una nuova cartella di lavoro.

Sub CreateNewWorkbook()Workbooks.AddEnd Sub

Quando si aggiunge una nuova cartella di lavoro, diventa la cartella di lavoro attiva.

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

Sub CreateNewWorkbook()Workbooks.AddMsgBox ActiveWorkbook.NameEnd Sub

Apri una cartella di lavoro usando VBA

Puoi usare VBA per aprire una cartella di lavoro specifica quando conosci il percorso del file della cartella di lavoro.

Il codice seguente aprirà la cartella di lavoro – Esempi.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, è sufficiente specificare il nome della cartella di lavoro, senza l’intero percorso.

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

Nel caso in cui la cartella di lavoro che si sta tentando di aprire non esiste, verrà visualizzato 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, prova ad aprirlo.

Il codice seguente controllerebbe il percorso 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") <> "" ThenWorkbooks.Open ("C:\Users\sumit\Documents\Examples.xlsx")ElseMsgBox "The file doesn't exist"End IfEnd Sub

Puoi anche usare la finestra di dialogo Apri per selezionare il file che vuoi aprire.

Sub OpenWorkbook()On Error Resume NextDim FilePath As StringFilePath = Application.GetOpenFilenameWorkbooks.Open (FilePath)End Sub

Il codice precedente apre la finestra di dialogo Apri. Quando si seleziona un file che si desidera aprire, assegna il percorso del file alla variabile FilePath. Cartelle di lavoro.Apri quindi utilizza 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 ottenere un errore in questo caso, abbiamo usato l’istruzione ‘On Error Resume Next’.

Related: Scopri tutto sulla gestione degli errori in Excel VBA

Salvataggio di una cartella di lavoro

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

Sub SaveWorkbook()ActiveWorkbook.SaveEnd 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 .xsm (o .xls) file, si perde la macro quando si apre il prossimo.

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

Oggetto Cartella di lavoro in VBA - Avviso quando salvi la cartella di lavoro per la prima volta

Quando salvi per la prima volta, è meglio usare l’opzione ‘Saveas’.

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

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

Se si desidera che il file venga salvato in una posizione specifica, è necessario menzionarlo nel valore del nome file. Il codice seguente salva il file sul mio desktop.

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

Se si desidera che l’utente ottenga l’opzione per selezionare la posizione in cui salvare il file, è possibile utilizzare chiama la finestra di dialogo Saveas. Il codice seguente mostra la finestra di dialogo Saveas e consente all’utente di selezionare la posizione in cui il file deve essere salvato.

Sub SaveWorkbook()Dim FilePath As StringFilePath = Application.GetSaveAsFilenameActiveWorkbook.SaveAs Filename:=FilePath & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabledEnd Sub

Si noti che invece di utilizzare FileFormat:=xlOpenXMLWorkbookMacroEnabled, è anche possibile utilizzare 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 vuoi salvare tutte le cartelle di lavoro, puoi usare il codice seguente:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In Workbookswb.SaveNext wbEnd Sub

Quanto sopra salva tutte le cartelle di lavoro, incluse quelle che non sono mai state salvate. Le cartelle di lavoro che non sono state salvate in precedenza verrebbero salvate nel percorso predefinito.

Se si desidera salvare solo le cartelle di lavoro che sono state precedentemente salvate, è possibile utilizzare il codice seguente:

Sub SaveAllWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Path <> "" Thenwb.SaveEnd IfNext wbEnd Sub

Salvataggio e chiusura di tutte le cartelle di lavoro

Se si desidera chiudere tutte le cartelle di lavoro, ad eccezione della cartella di lavoro che contiene il codice corrente, è possibile utilizzare il codice seguente:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

Il codice precedente chiuderebbe tutte le cartelle di – Questo libro di lavoro). Nel caso in cui ci siano cambiamenti 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 con nome.

Salva una copia della cartella di lavoro (con Timestamp)

Quando lavoro con dati complessi e dashboard nelle cartelle di lavoro di Excel, creo spesso versioni diverse delle mie cartelle di lavoro. Questo è utile nel caso in cui qualcosa vada storto con la mia attuale cartella di lavoro. 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 precedente salverebbe una copia della cartella di lavoro ogni volta che si esegue 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 questo è 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, è possibile utilizzare il codice seguente che salva una nuova copia del lavoro ogni volta che lo si salva. E aggiunge anche una data e un timestamp come parte del nome della cartella di lavoro. Questo può aiutare a tenere traccia di qualsiasi errore che hai fatto come non si perde mai uno 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") & ".xlsm"End Sub

Il codice precedente creerebbe una copia ogni volta che si esegue questa macro e aggiungere una 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 vuoi 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 dividerli in una cartella di lavoro per ogni foglio di lavoro.

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

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

Sub CreateWorkbookforWorksheets()Dim ws As WorksheetDim wb As WorkbookFor Each ws In ThisWorkbook.WorksheetsSet wb = Workbooks.Addws.Copy Before:=wb.Sheets(1)Application.DisplayAlerts = Falsewb.Sheets(2).DeleteApplication.DisplayAlerts = Truewb.SaveAs "C:\Users\sumit\Desktop\Test\" & ws.Name & ".xlsx"wb.CloseNext wsEnd Sub

Nel codice precedente, abbiamo usato due variabili ‘ws’ e ‘wb’.

Il codice passa attraverso ogni foglio di lavoro (usando il Per ogni ciclo successivo) 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.

Si noti 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 è coperto nella prossima sezione.

Assegnare un oggetto Cartella di lavoro a una variabile

In VBA, è possibile assegnare un oggetto a una variabile e quindi utilizzare la variabile per fare riferimento a tale oggetto.

Ad esempio, nel codice seguente, uso VBA per aggiungere una nuova cartella di lavoro e quindi assegnare quella cartella di lavoro alla variabile wb. Per fare ciò, ho bisogno di usare l’istruzione SET.

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

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

Si noti che il primo passo nel codice è 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 che questo compito è fatto, possiamo usare la variabile wb per salvare la cartella di lavoro (o fare qualsiasi altra cosa con esso).

Loop attraverso cartelle di lavoro aperte

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

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

Supponiamo di voler salvare e chiudere tutte le cartelle di lavoro aperte, tranne quella con il codice al suo interno, quindi è possibile utilizzare il codice seguente:

Sub CloseandSaveWorkbooks()Dim wb As WorkbookFor Each wb In WorkbooksIf wb.Name <> ThisWorkbook.Name Thenwb.Close SaveChanges:=TrueEnd IfNext wbEnd Sub

Il codice precedente utilizza il Per ogni ciclo per passare attraverso ogni cartella di lavoro nella collezione di cartelle di lavoro. Per fare ciò, dobbiamo prima dichiarare ‘ wb ‘ come variabile di tipo cartella di lavoro.

In ogni ciclo di loop, 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 IntegerWbCount = Workbooks.CountFor i = WbCount To 1 Step -1If Workbooks(i).Name <> ThisWorkbook.Name ThenWorkbooks(i).Close SaveChanges:=TrueEnd IfNext iEnd Sub

Il codice precedente utilizza il ciclo For Next per chiudere tutte le cartelle di lavoro tranne quella che contiene il codice. In questo caso, non abbiamo bisogno di dichiarare una variabile cartella di lavoro, ma invece, abbiamo bisogno di contare il numero totale di cartelle di lavoro aperte. Quando abbiamo il conteggio, usiamo il ciclo successivo per passare attraverso ogni cartella di lavoro. Inoltre, usiamo il numero di indice per fare riferimento alle cartelle di lavoro in questo caso.

Si noti che nel codice precedente, stiamo eseguendo il loop da WbCount a 1 con il Passaggio -1. Questo è necessario poiché con ogni ciclo, la cartella di lavoro viene chiusa e il numero di cartelle di lavoro viene ridotto di 1.

Errore mentre si lavora con l’oggetto Cartella di lavoro (errore di runtime ‘9’)

Uno degli errori più comuni che si possono incontrare quando si lavora con le cartelle di lavoro è-Errore di runtime ‘9’ – Pedice fuori intervallo.

Workbook Object in VBA - Runtime Error 9 Pedice Out of Range

Generalmente, gli errori VBA non sono molto informativi e spesso lasciano a voi per capire cosa è andato storto.

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

  • La cartella di lavoro a cui si sta tentando di accedere non esiste. Ad esempio, se sto cercando di accedere alla quinta cartella di lavoro usando le cartelle di lavoro(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 è Esempi.xlsx e usi l’esempio.xlsx. quindi ti mostrerà questo errore.
  • Se non hai salvato una cartella di lavoro e usi l’estensione, ottieni questo errore. Ad esempio, se il nome della cartella di lavoro è Book1 e si utilizza il nome Book1.xlsx senza salvarlo, si otterrà questo errore.
  • La cartella di lavoro a cui si sta tentando di accedere è chiusa.

Ottenere un Elenco di Tutte le Cartelle di lavoro

Se si desidera ottenere un elenco di tutte le cartelle di lavoro della cartella di lavoro corrente (la cartella di lavoro in cui si sta eseguendo il codice), è possibile utilizzare il seguente codice:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).NameNext iEnd Sub

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

Se si desidera ottenere anche il percorso del file, è possibile utilizzare il codice seguente:

Sub GetWorkbookNames()Dim wbcount As Integerwbcount = Workbooks.CountThisWorkbook.Worksheets.AddActiveSheet.Range("A1").ActivateFor i = 1 To wbcountRange("A1").Offset(i - 1, 0).Value = Workbooks(i).Path & "\" & Workbooks(i).NameNext iEnd Sub

Apri la cartella di lavoro specificata facendo doppio clic sulla cella

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

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

Questo codice verrà inserito nella finestra del codice di ThisWorkbook.

Per fare ciò:

  • Fare doppio clic sull’oggetto ThisWorkbook in project explorer. 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 vuoi aprire, puoi farlo semplicemente facendo doppio clic sul percorso del file e VBA aprirebbe immediatamente quella cartella di lavoro.

Dove inserire il codice VBA

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

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

Ecco i passaggi per farlo:

  1. Vai alla scheda Sviluppatore.Utilizzo delle cartelle di lavoro nella scheda Excel VBA-Developer nella barra multifunzione
  2. Fare clic sull’opzione Visual Basic. Questo aprirà l’editor VB nel backend.Fare clic su Visual Basic
  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 clicca su Modulo. Questo inserirà un oggetto modulo per la tua cartella di lavoro.Utilizzo delle cartelle di lavoro in Excel VBA - inserimento del modulo
  5. Copia e incolla il codice nella finestra del modulo.Utilizzo delle cartelle di lavoro nel modulo di inserimento di Excel VBA

Potrebbero piacerti anche i seguenti tutorial di Excel VBA:

  • 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 dei file da una cartella in Excel (con e senza VBA).
  • Come utilizzare la funzione Excel VBA InStr (con ESEMPI pratici).
  • Come ordinare i dati in Excel utilizzando VBA (una guida passo-passo).