Vba: come ottenere un elenco di tutte le cartelle di lavoro aperte
È possibile utilizzare un ciclo For Each in VBA per ottenere un elenco di tutte le cartelle di lavoro di Excel aperte.
Ecco un modo comune per farlo in pratica:
Sub ListAllOpenWorkbooks()
Dim wbName As String
Dim wb As Workbook
'add each open workbook to message box
For Each wb In Application.Workbooks
wbName = wbName & wb.Name & vbCrLf
Next
'display message box with all open workbooks
MsgBox wbName
End Sub
Questa particolare macro genererà una finestra di messaggio contenente un elenco di tutte le cartelle di lavoro di Excel aperte.
L’esempio seguente mostra come utilizzare questa macro nella pratica.
Esempio: ottenere un elenco di tutte le cartelle di lavoro aperte utilizzando VBA
Supponiamo che le seguenti tre cartelle di lavoro di Excel siano attualmente aperte:
- baseball_data.xlsx
- football_data.xlsx
- hockey_data.xlsx
Diciamo che vogliamo utilizzare VBA per elencare i nomi di tutte queste cartelle di lavoro aperte.
Per fare ciò possiamo creare la seguente macro:
Sub ListAllOpenWorkbooks()
Dim wbName As String
Dim wb As Workbook
'add each open workbook to message box
For Each wb In Application.Workbooks
wbName = wbName & wb.Name & vbCrLf
Next
'display message box with all open workbooks
MsgBox wbName
End Sub
Quando eseguiamo questa macro, riceviamo il seguente output:
Nella finestra di messaggio vengono visualizzati i nomi di ciascuna cartella di lavoro aperta, con ciascuna cartella di lavoro univoca elencata nella propria riga.
Tieni presente che abbiamo utilizzato la costante vbCrLf nel ciclo For Each per inserire un ritorno a capo, che sposta il cursore sulla riga successiva.
Ciò ci ha consentito di elencare ciascuna cartella di lavoro aperta sulla propria riga nella finestra di messaggio.
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:
Come rinominare un file utilizzando VBA
Come elencare i file in una cartella utilizzando VBA
Come aprire tutti i file in una cartella utilizzando VBA
Come verificare se il file esiste utilizzando VBA