Come identificare il tipo di foglio di Excel in VBA

Se stai scrivendo macro che elaborano diversi fogli di lavoro in una cartella di Excel, potresti dover capire che tipo di fogli di lavoro ci sono nella cartella di lavoro, prima di eseguire qualsiasi elaborazione. Questo può essere particolarmente critico perché alcuni comandi VBA funzionano solo su determinati tipi di fogli di lavoro.

Prima di poter capire quali tipi di fogli di lavoro sono presenti in una cartella di Excel, è utile sapere come Excel memorizza internamente alcuni degli oggetti che compongono la cartella di lavoro. Excel gestisce sia una collezione Worksheets che una collezione Charts. La collezione Worksheets è costituita da oggetti foglio di lavoro (worksheet) e l’insieme Charts è costituito da oggetti foglio grafico. Gli oggetti foglio grafico sono quei grafici che occupano un intero foglio di lavoro; non include quelli che sono oggetti incorporati in un foglio di lavoro.

È interessante notare che anche gli oggetti foglio di lavoro e foglio grafico sono membri della collezione Sheets. Pertanto, se si desidera elaborare una cartella di lavoro nell’ordine in cui compaiono i fogli, è più semplice farlo scorrendo la collezione Sheets. Quando si esegue questa operazione, è possibile esaminare la proprietà Type dei singoli oggetti all’interno della collezione per determinare il tipo di oggetto. Excel definisce due tipi di oggetti che possono appartenere alla raccolta Sheets:

  • xlWorksheet. Questo è un normale foglio di lavoro.
  • xlChart. Questo è un grafico.

 

I due tipi di oggetti seguenti sono ancora supportati da Microsoft Excel, ma Microsoft consiglia di eseguirne la migrazione all’ultima versione di Microsoft VBA:

  • xlExcel4MacroSheet. Si tratta di un foglio macro, utilizzato in Excel 4.0.
  • xlExcel4IntlMacroSheet. Si tratta di un foglio macro internazionale, utilizzato in Excel 4.0.

 

Potresti essere tentato di pensare che guardare l’elenco dei tipi di foglio sia sufficiente. È interessante notare, tuttavia, che Excel non restituisce sempre ciò che ci si aspetterebbe dalla proprietà Type. Infatti, esaminando la proprietà Type per un grafico, essa restituisce un valore uguale a xlExcel4MacroSheet. Ciò può causare problemi per qualsiasi macro.

Il modo per aggirare questo, quindi, è confrontare il nome di ciascun elemento nella collezione Sheets con quelli nella collezione Charts. Se il nome si trova in entrambe le collezione, è lecito ritenere che il foglio sia un grafico. Se non è in entrambi, puoi analizzare ulteriormente per vedere se il foglio di lavoro è uno degli altri tipi. La seguente macro, SheetType, segue esattamente questo processo:

Questo contenuto è riservato agli abbonati

Solo gli utenti con Abbonamento VBA Coder oppure Ultimate possono visionarlo.

Se sei già abbonato Accedi per sbloccare il contenuto!

In caso contrario abbonati qui! L'abbonamento è conveniente.

E puoi interromperlo in ogni momento e in completa autonomia.

ABBONATI

(puoi renderti conto di quanti siano i contenuti riservati

raggiungendo questa pagina)

 

Quando esegui la macro, viene visualizzata una singola finestra di messaggio che mostra il nome di ciascun foglio della cartella di lavoro, insieme al tipo di foglio che è.

Infine, ricorda che questo codice ti dice quali tipi di fogli ci sono in una cartella di lavoro, non ti dice in che tipo di cartella di lavoro sono contenuti (in altre parole, alla macro non importa in quale versione di Excel stai lavorando).

Tags: , , , , , , , , , ,

Ti è stato utile?