VBA – Caixa de Diálogo Abrir Arquivo
O VBA permite que você escolha um arquivo para abrir usando o método Application.GetOpenFilename. Neste tutorial, você aprenderá a abrir uma caixa de diálogo de arquivo e a definir parâmetros.
Se quiser saber como abrir e fechar um arquivo, clique neste link: Abrir/fechar arquivo em VBA
Abrir uma Caixa de Diálogo de Arquivo no VBA
Se quiser abrir um arquivo no VBA, primeiro você precisa abrir uma caixa de diálogo de arquivo para escolher um arquivo. Aqui está o código:
Dim strArquivo As String
strArquivo = Application.GetOpenFilename(FileFilter:="Excel files (*.xlsx*), *.xlsx*", Title:="Escolha um arquivo Excel para abrir", MultiSelect:=True)
Como você pode ver, o método tem vários parâmetros. FileFilter permite filtrar os tipos de arquivo de que você precisa, no nosso caso, arquivos .xlsx.
No parâmetro Title, você pode definir um título para a caixa de diálogo. Se quiser permitir a abertura de vários arquivos, será necessário definir MultipleSelect como True. Se você não definir esse parâmetro, somente um arquivo poderá ser selecionado.
Imagem 1. Abrir uma caixa de diálogo de arquivo
Como você pode ver na Imagem 1, a caixa de diálogo aparece com o título Escolha um arquivo Excel para abrir. Somente os arquivos do Excel são filtrados e é possível selecionar vários arquivos.
Abrir uma Caixa de Diálogo de Arquivo em uma Pasta Específica
Se quiser abrir uma caixa de diálogo em uma pasta específica, é preciso usar o método .FileDialog com o parâmetro msoFileDialogFilePicker. No exemplo, abriremos uma caixa de diálogo na pasta C:\VBA Folder. Aqui está o código:
Dim fd As Office.FileDialog
Dim strArquivo As String
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsx?", 1
.Title = "Escolha um arquivo Excel"
.AllowMultiSelect = False
.InitialFileName = "C:\VBA Folder"
If .Show = True Then
strArquivo = .SelectedItems(1)
End If
End With
Primeiro, você precisa declarar a variável fd do tipo Office.FileDialog e a variável string para a obtenção do arquivo:
Dim fd As Office.FileDialog
Dim strArquivo As String
Depois disso, você precisa definir fd como Application.FileDialog(msoFileDialogFilePicker):
Set fd = Application.FileDialog(msoFileDialogFilePicker)
Agora, em With fd End With, podemos definir vários parâmetros:
.Filters.Clear
.Filters.Add "Excel Files", "*.xlsx?", 1
.Title = "Escolha um arquivo Excel"
.AllowMultiSelect = False
Aqui, limpamos os filtros de arquivo (.Filters.Clear) e o definimos como .xlsx (.Filters.Add “Excel Files”, “*.xlsx?”, 1).
Além disso, podemos definir o título da caixa de diálogo: .Title = “Escolha um arquivo Excel”.
Podemos limitar o usuário a selecionar apenas um arquivo por meio de:
.AllowMultiSelect = False
Para abrir uma caixa de diálogo na pasta que desejamos, precisamos colocar esta linha do código:
.InitialFileName = "C:\VBA Folder"
No final, abriremos apenas a caixa de diálogo com todos os parâmetros definidos anteriormente:
If .Show = True Then
strArquivo = .SelectedItems(1)
End If
Quando executamos esse código, a caixa de diálogo para abrir o arquivo aparece na pasta C:\VBA Folder:
Imagem 2. Abrir uma caixa de diálogo de arquivo em uma pasta específica