Seleção de arquivos, pastas e salvar arquivos com o FileDialog VBA
Objetivo: Demonstrar o uso do objeto FileDialog para seleção de arquivos, pastas e salvar arquivos.
//
O objeto fileDialog tem por função permitir de forma simples a utilização dos objetos do Windows referentes a conhecida janela de seleção de arquivos, pasta e salvar arquivos.
Este objeto é muito útil para permitir a interação com o usuário, por exemplo: você tem uma planilha que realiza a importação de dados de um arquivo texto e abre ele em colunas e depois gera um relatório. Com esta função você pode permitir que o usuário selecione o arquivo texto através de um atalho na própria planilha e que a importação seja disparada assim que for selecionado o arquivo.
No próprio código fonte eu coloquei a explicação de cada um dos procedimentos passo-a-passo conforme abaixo:
'Procedimento para salvar arquivos
Sub lsSalvar()
Dim fDlg As FileDialog
Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogSaveAs)
'Nome padrão para salvar o arquivo
fDlg.InitialFileName = ActiveWorkbook.Name
fDlg.Show
End Sub
'Procedimento para selecionar arquivos
Sub lsSelecionarArquivo()
Dim fDlg As FileDialog
Dim lArquivo As String
'Chama o objeto passando os parâmetros
Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogOpen)
With fDlg
'Alterar esta propriedade para True permitirá a seleção de vários arquivos
.AllowMultiSelect = False
'Determina a forma de visualização dos aruqivos
.InitialView = msoFileDialogViewDetails
'Filtro de arquivos, pode ser colocado mais do que um filtro separando com ; por exemplo: "*.xls;*.xlsm"
.Filters.Add "Texto", "*.txt", 1
'Determina qual o drive inicial
.InitialFileName = "C:\"
End With
'Retorna o arquivo selecionado
If fDlg.Show = -1 Then
lArquivo = fDlg.SelectedItems(1)
MsgBox "O arquivo selecionado está em: " & lArquivo
Cells(5, 5).Value = lArquivo
Else
MsgBox "Não foi selecionado nenhum arquivo"
End If
End Sub
'Procedimento para salvar arquivos
Sub lsSelecionarPasta()
Dim fDlg As FileDialog
Dim lPasta As String
Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogFolderPicker)
'Retorna a pasta selecionada
If fDlg.Show = -1 Then
lPasta = fDlg.SelectedItems(1)
MsgBox "A pasta selecionada foi: " & lPasta
Cells(2, 5).Value = lPasta
Else
MsgBox "Não foi selecionada nenhuma pasta"
End If
End Sub
Abraço
Marcos Rieper
//





