Elencare i nomi degli oggetti di Excel

Download PDF

A volte capita di avere a che fare con molti oggetti su un oglio di Excel quali linee, rettangoli, cerchi, frecce e volerli manipolare.

Il metodo semplice è di assegnare ad ogni oggetto un nome e successivamente manipolarlo in VBA attraverso le proprietà dell’oggetto.

In VBA per “indirizzare” un oggetto di un foglio di lavoro si usa il costrutto:

ActiveSheet.Shapes.Range(Array("NOME_OGGETTO")).Select
 With Selection.ShapeRange.Fill
 .Visible = msoTrue
 .ForeColor.ObjectThemeColor = msoThemeColorAccent2
 .ForeColor.TintAndShade = 0
 .ForeColor.Brightness = 0
 .Transparency = 0
 .Solid
 End With

In questo caso si cambia il colore dell’oggetto che ha per nome “NOME_OGGETTO“.

Questo procedimento funziona bene se si conoscono i nomi degli oggetti sul foglio di lavoro.

Ciò non è possibile in modo banale e sopratutto non è semplice esportare in un foglio excel i nomi per utilizzarli ad esempio nella macro che ne deve cambiare il colore. Ciò rende il tutto molto complicato perchè la macro dovrebbe conoscere tutti i nomi di tutti gli oggiettiprsenti sul foglio di lavoro senza leggerne i nomi..

Questa semplice macro crea un foglio di lavoro e inserisce la lista di tutti i nomi di tutti gli oggetti presenti in un foglio di lavoro “sorgente”.

 

Sub ListWorkSheetNamesNewWs()

Dim xWs As Worksheet
Dim Current As Worksheet

Dim i As Long

On Error Resume Next

Application.DisplayAlerts = False
xTitleId = "OFFICE-GURU List NAMES"
Application.Sheets(xTitleId).Delete
Set Current = ActiveSheet
Application.Sheets.Add Application.Sheets(1)
Set xWs = Application.ActiveSheet
xWs.Name = xTitleId
Current.Activate

i = 1
For i = 1 To ActiveSheet.Shapes.Count
 xWs.Range("A1").Offset(i, 0).Value = ActiveSheet.Shapes.Range(Array(i)).Name
Next i

Application.DisplayAlerts = True

End Sub

Per usarla è molto semplice:

  1. Importate la macro nel vostro ambiente excel
  2. andate sul foglio di lavoro per cui volete creare la lista degli oggetti
  3. premete ALT F11
  4. Eseguite la macro

un nuovo foglio di lavoro viene creato con l’elenco dei nomi degli oggetti presenti sul foglio di lavoro su cui si è eseguita la macro alla colonna A.

Per concludere l’articolo alcuni consigli di manuali sulla manipolazione degli oggetti in Excel:

Attenzione solo che se si ragguppano gli oggetti attraverso il comando “Raggruppa” o “Group” in inglese, la macro riporterà il nome del “gruppo” senza aprirlo nelle sue parti costituenti (il che non avrebbe senso perchè l’utente ha appunto creato un gruppo e quindi ci si aspetta che lo voglia manipolare come gruppo appunto)

Scarica File di Esempio: List Objects in Excel

La macro è stata adattata da una simile del sito ExtendOffice

Cambiare settaggi VBA per eseguire MACRO

Download PDF

Succede spesso che le macro in excel non vengano eseguite come ci si aspetta.

spesso il problema nasce dal settaggio per eseguire le macro dal centro di controllo di Excel.

qui un semplice video che mostra come modificare tali settaggi ed far eseguire le macro Excel.

Personalmente consiglio il terzo settaggio ma a seconda della vostra situazione ed esigenze, altri settaggi potrebbero essere migliori.

Buona visione.

 

Il video mostra un file di esempio che esegue una macro all’apertura, come spiegato in questo articolo..

Eseguire macro all’apertura di un file

Eseguire macro all’apertura del foglio Excel

Download PDF

Breve tutorial per vedere come creare una macro che viene eseguita automaticamente quando il file excel viene aperto

Questa funzionalità è per esempio utile quando si vuole eseguire un file excel a intervalli precisi, e si inserisce il file excel nello scheduler di Windows.

Windows apre il file excel ma succede ben poco se il file excel non esegue la macro.

Questo trucco consente di eseguire la macro e automatizzare completamente la gestione del file excel che verrà eseguito, aprira’ la macro, farà cosa è pensato per fare e se nell’ultima riga della macro si inserisce un

workbook.close

allora il file si chiuderà da solo senza disturbare il PC e il suo utilizzatore oltre il tempo necessario per eseguire la macro.

Qui qualche riferimento al metodo indicato:

vediamo qui il video del tutorial:

è necessario gestire un evento di Excel. é tutto molto semplice ma se volte riferimenti su questo aspetto, potete leggere ad esempio questo libro:

Come potete vedere dal video, il processo si blocca quando la macro non è considerata sicura o i settaggi di esecuzione delle macro VBA non sono corretti.

Qui trovate un secondo tutorial per cambiare i settaggi delle macro