Una guida per lavorare con le cartelle di lavoro in vba

In Excel, una cartella di lavoro è uno dei più importanti tra tutti gli oggetti Excel ed è anche essenziale capire come utilizzare e fare riferimento alle cartelle di lavoro quando si scrivono codici VBA.

In questo tutorial esploreremo tutte le cose che devi sapere. Ma la prima cosa che devi capire sono gli oggetti coinvolti nel lavorare con le cartelle di lavoro in VBA.

Cose da sapere:

  • Oggetto raccoglitori
  • Oggetto raccoglitore

Questi due oggetti sembrano uguali, ma c’è una differenza fondamentale tra i due.

Oggetto raccoglitori

In VBA, l’oggetto Workbooks rappresenta la raccolta di cartelle di lavoro aperte in Microsoft Excel. Immagina di avere dieci schedari aperti contemporaneamente. E vuoi fare riferimento all’unica cartella di lavoro tra loro. In questo caso, è necessario utilizzare l’oggetto cartella di lavoro per fare riferimento a questa cartella di lavoro utilizzando il suo nome.

vba workbooks object

Oggetto raccoglitore

In VBA, l’oggetto cartella di lavoro rappresenta una singola cartella di lavoro tra tutte le cartelle di lavoro attualmente aperte in Microsoft Excel. Il modo migliore per capirlo è pensare a dichiarare una variabile come raccoglitore che si desidera utilizzare per fare riferimento a un particolare raccoglitore nel codice.

represents one single workbook

Collegamenti utili : Aggiungi una scheda Sviluppatore | Editor di Visual Basic | Esegui una macro | Cartella di lavoro sulle macro personali

Fare riferimento a una cartella di lavoro in VBA

Per lavorare con le cartelle di lavoro in VBA, la prima cosa che devi sapere è come fare riferimento a una cartella di lavoro in una macro. Ecco la cosa felice: ci sono diversi modi per fare riferimento a una cartella di lavoro. E in futuro esploreremo ciascuno di essi.

1. Per nome

Il modo più semplice per fare riferimento a una cartella di lavoro è tramite il nome. Supponiamo di voler attivare la cartella di lavoro Book1.xlsx, in questo caso il codice da utilizzare dovrebbe essere il seguente:

refer to a workbook in vba by name

Fare riferimento a una cartella di lavoro con il suo nome è abbastanza semplice, è necessario specificare il nome e il gioco è fatto. Ma c’è una cosa di cui devi occuparti : se una cartella di lavoro non viene salvata, devi utilizzare solo il nome. E se è registrato, devi utilizzare il nome con l’estensione.

2. Per numero

Quando apri una cartella di lavoro, Excel assegna un numero di indice a quella cartella di lavoro e puoi utilizzare quel numero per fare riferimento a una cartella di lavoro. La cartella di lavoro aperta per prima avrà il numero di indice “1” e la seconda avrà “2” e così via.

refer to a workbook in vba b number

Questo metodo potrebbe sembrarti meno reale perché è difficile sapere quale cartella di lavoro si trova su quale numero di indice. Esiste però una situazione in cui questo metodo è molto utile da utilizzare, ovvero il ciclo continuo di tutte le cartelle di lavoro aperte.

3. Da questa cartella di lavoro

Questa cartella di lavoro è una proprietà che ti aiuta a fare riferimento alla cartella di lavoro in cui scrivi il codice. Supponiamo che tu scriva il codice in “Book1” e utilizzi ThisWorkbook per salvare la cartella di lavoro. Ora, anche quando cambi il nome della cartella di lavoro, non sarà necessario modificare il codice.

refer to a workbook in vba by this workbook

Il codice precedente conta il numero di fogli nella cartella di lavoro in cui è scritto questo codice e visualizza una finestra di messaggio con il risultato.

4. Per ActiveWorkbook

Se vuoi fare riferimento a una cartella di lavoro attiva, devi utilizzare la proprietà “ActiveWorkbook”. L’utilizzo migliore di questa proprietà è quando si è sicuri di quale cartella di lavoro è attivata in questo momento. Oppure hai già attivato la cartella di lavoro su cui vuoi lavorare.

by active workbook

Il codice precedente attiva prima la cartella di lavoro “Book1”, quindi utilizza la proprietà della cartella di lavoro attiva per salvare e chiudere la cartella di lavoro attiva.

Accedi a tutti i metodi e le proprietà

In VBA, ogni volta che si fa riferimento a un oggetto, VBA consente di accedere alle proprietà e ai metodi forniti con quell’oggetto. Allo stesso modo, l’oggetto cartella di lavoro viene fornito con proprietà e metodi. Per accedervi è necessario prima definire la cartella di lavoro, quindi inserire un punto .

define the workbook first and enter a dot

Nel momento in cui si digita un punto (.), viene visualizzato l’elenco di proprietà e metodi. Ora devi avere una domanda su come identificare quale è una proprietà e quale è un metodo.

Ecco il trucco. Se guardi da vicino, puoi identificare un mattoncino verde in movimento e una mano grigia davanti a ciascun nome nell’elenco. Quindi tutte le proprietà hanno questa mano grigia prima del nome e i metodi hanno un mattoncino verde in movimento.

Ad esempio, per utilizzare un metodo con una cartella di lavoro

Immagina di voler chiudere una cartella di lavoro (che è un metodo), devi digitare o selezionare “Chiudi” dall’elenco.

select close from a list

Successivamente è necessario inserire le parentesi iniziali in modo che IntelliSense sappia quali argomenti è necessario impostare.

enter starting parentheses

Con il metodo close devi definire tre argomenti e come puoi vedere tutti questi argomenti sono facoltativi e puoi ignorarli se lo desideri. Ma alcuni metodi non hanno argomenti (ad esempio: attiva)

Ad esempio, per utilizzare una proprietà con una cartella di lavoro

Immagina di voler contare i fogli della cartella di lavoro “libro1”. In questo caso, è necessario utilizzare la proprietà “Fogli” e quindi la relativa proprietà conteggio aggiuntiva.

use the sheets property

Nel codice sopra, come dicevo, imposti book1, poi la proprietà sheet si riferisce a tutti i fogli, poi la proprietà count per contarli. E quando esegui questo codice ti mostra una finestra di messaggio con il risultato.

Utilizzo dell’istruzione “WITH” con la cartella di lavoro

In VBA esiste un’istruzione “With” che può aiutarti a lavorare con una cartella di lavoro mentre scrivi una macro in modo efficiente. Vediamo l’esempio qui sotto in cui hai tre diverse righe di codice con la stessa cartella di lavoro, ovvero ActiveWorkbook.

using with statement with workbook

Con l’istruzione “WITH”, puoi fare riferimento alla cartella di lavoro attiva solo una volta e utilizzare tutte le proprietà e i metodi presenti nel codice.

  • Innanzitutto, è necessario iniziare con l’istruzione iniziale “With ActiveWorkbook” e terminare l’istruzione con “End With”.
start with the starting statement
  • Successivamente, devi scrivere il codice tra questa istruzione che hai nell’esempio sopra.
write the code between the statement

Come puoi vedere nel codice qui sopra, abbiamo fatto riferimento a quello di ActiveWorkbook utilizzando l’istruzione WITH e quindi dovrebbero essere utilizzate tutte le proprietà e i metodi.

 Sub vba_activeworkbook_with_statement() With ActiveWorkbook .Sheets.Add Count:=5 .Charts.Visible = False .SaveAs ("C:UsersDellDesktopmyFolderbook2.xlsx") End With End Sub

Ti faccio un esempio semplice e concreto per farti capire tutto. Immagina di chiedermi di andare nella stanza 215 per prendere la bottiglia d’acqua, e quando torno mi mandi di nuovo nella stanza 215 per prendere una penna, poi mandami di nuovo a prendere un laptop. Ora il punto è questo: tutte le cose che mi hai detto di prendere sono nella stanza 215. Quindi è meglio se mi mandi nella stanza 215 e mi dici di prendere tutte e tre le cose in una volta.

Leggi: Con – Termina con

Dichiarare una variabile come cartella di lavoro

A volte è necessario dichiarare una variabile come raccoglitore per utilizzarla ulteriormente nel codice. Beh, non richiede niente di speciale da parte tua.

declare variable as workbook
  1. Utilizzare l’istruzione DIM (dichiarazione).
  2. Scrivi il nome della variabile.
  3. Imposta il tipo di variabile su Cartella di lavoro.

Gestire gli errori

Quando si lavora con uno o più oggetti della cartella di lavoro in VBA, potrebbe essere necessario gestire anche gli errori. Prendiamo un esempio dell’errore “Errore di runtime 9: Indice fuori intervallo” . Questo errore può verificarsi per vari motivi.

  • La cartella di lavoro a cui stai tentando di fare riferimento non è aperta.
  • Forse hai scritto male il nome.
  • La cartella di lavoro a cui ti riferisci non è ancora salvata e stai utilizzando l’estensione con quel nome.
  • Se stai utilizzando il numero di indice per fare riferimento a una cartella di lavoro e il numero utilizzato è maggiore del numero totale di cartelle di lavoro aperte.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *