Vba: como obter uma lista de todas as pastas de trabalho abertas
Você pode usar um loop For Each no VBA para obter uma lista de todas as pastas de trabalho abertas do Excel.
Aqui está uma maneira comum de fazer isso na prática:
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
Esta macro específica irá gerar uma caixa de mensagem contendo uma lista de todas as pastas de trabalho abertas do Excel.
O exemplo a seguir mostra como usar esta macro na prática.
Exemplo: Obtenha uma lista de todas as pastas de trabalho abertas usando VBA
Vamos supor que as três pastas de trabalho do Excel a seguir estejam abertas no momento:
- baseball_data.xlsx
- futebol_dados.xlsx
- hockey_data.xlsx
Digamos que queremos usar o VBA para listar os nomes de todas essas pastas de trabalho abertas.
Podemos criar a seguinte macro para fazer isso:
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 executamos esta macro, recebemos a seguinte saída:
A caixa de mensagem exibe os nomes de cada uma das pastas de trabalho abertas, com cada pasta de trabalho exclusiva listada em sua própria linha.
Observe que usamos a constante vbCrLf no loop For Each para inserir um retorno de carro, que move o cursor para a próxima linha.
Isso nos permitiu listar cada pasta de trabalho aberta em sua própria linha na caixa de mensagem.
Recursos adicionais
Os tutoriais a seguir explicam como realizar outras tarefas comuns em VBA:
Como renomear um arquivo usando VBA
Como listar arquivos em uma pasta usando VBA
Como abrir todos os arquivos de uma pasta usando VBA
Como verificar se o arquivo existe usando VBA