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