Índice:
Vídeo: Curso VBA | Aula 30 - Método GetOpenFilename 2025
Se o seu procedimento VBA precisar solicitar ao usuário um nome de arquivo, poderia usar a função InputBox e permitir que o usuário do Excel escreva. Uma caixa de entrada geralmente não é a melhor ferramenta para este trabalho, no entanto, porque a maioria dos usuários tem dificuldade em se lembrar de caminhos, barras invertidas, nomes de arquivos e extensões de arquivos. Em outras palavras, é muito fácil estragar quando digitar um nome de arquivo.
Para obter uma solução melhor para este problema, use o método GetOpenFilename do objeto Aplicativo, o que garante que seu código tenha as mãos em um nome de arquivo válido, incluindo seu caminho completo. O método GetOpenFilename exibe a caixa de diálogo Open aberta familiar (um toque morto para a caixa de diálogo que o Excel exibe quando você escolhe Arquivo → Abrir → Procurar).
O método GetOpenFilename na verdade não abre o arquivo especificado. Este método simplesmente retorna o nome de arquivo selecionado pelo usuário como uma seqüência de caracteres. Então você pode escrever código para fazer o que quiser com o nome do arquivo.
A sintaxe para o método GetOpenFilename
A sintaxe oficial do método GetOpenFilename é a seguinte:
objeto. GetOpenFilename ([fileFilter], [filterIndex], [título], [buttonText], [multiSelect])
O método GetOpenFilename leva os argumentos opcionais abaixo.
Argumento | O que faz |
---|---|
FileFilter | Determina os tipos de arquivos que aparecem na caixa de diálogo
(por exemplo, *. TXT). Você pode especificar vários filtros para o usuário escolher. |
FilterIndex | Determina qual do arquivo filtra a caixa de diálogo exibida por
padrão. |
Título | Especifica a legenda para a barra de título
da caixa de diálogo. |
ButtonText | Ignorado (usado apenas para a versão Macintosh do Excel). |
MultiSelect | Se verdadeiro, o usuário pode selecionar vários arquivos. |
Um exemplo GetOpenFilename
O argumento fileFilter determina o que aparece na lista suspensa Arquivos de Tipo da caixa de diálogo. Este argumento consiste em pares de cadeias de filtros de arquivos seguidos pela especificação do filtro de arquivo curinga, com vírgulas separando cada parte e par. Se omitido, este argumento padrão é o seguinte:
Todos os arquivos (*. *), *. *
Observe que essa seqüência de caracteres é composta por duas partes, separadas por uma vírgula:
Todos os arquivos (*. *)
e
*. *
A primeira parte desta seqüência de caracteres é o texto exibido na lista suspensa Arquivos de Tipo. A segunda parte determina quais arquivos a caixa de diálogo exibe. Por exemplo, *. * significa todos os arquivos.
O código no exemplo a seguir abre uma caixa de diálogo que pede ao usuário um nome de arquivo.O procedimento define cinco filtros de arquivos. Observe que a seqüência de continuação da linha VBA é usada para configurar a variável Filtro; Isso ajuda a simplificar esse argumento bastante complicado.
Sub GetImportFileName () Dim Finfo As String Dim FilterIndex Como Long Dim Title As String Dim FileName Como Variant 'Configurar lista de filtros de arquivos FInfo = "Arquivos de texto (*.txt), *. txt, "& _" Arquivos do Lotus (*. prn), *. Prn, "& _" Comma Separated Files (*. csv), *. csv, "& _" Arquivos ASCII (*. asc), *. asc, "& _" Todos os arquivos (*. *), *. *" ' Exibição *. * por padrão FilterIndex = 5 'Defina a legenda da caixa de diálogo Título = "Selecione um arquivo para importar"' Obter o nome do arquivo FileName = Aplicação. GetOpenFilename (FInfo, _ FilterIndex, Title) 'Conduza as informações de retorno da caixa de diálogo Se FileName = False Then MsgBox "Nenhum arquivo foi selecionado. "Else MsgBox" Você selecionou "& FileName End If End Sub
Aqui está a caixa de diálogo que o Excel exibe quando você executa este procedimento. A aparência pode variar, dependendo da versão do Windows que você usa e das opções de exibição que você definiu.
O método GetOpen Filename exibe uma caixa de diálogo personalizável e retorna o caminho e o nome do arquivo selecionado. Não abre o arquivo.Em um aplicativo real, você faria algo mais significativo com o nome do arquivo. Por exemplo, você pode querer abri-lo usando uma declaração como esta:
Cadernos de trabalho. Abra FileName
Observe que a variável FileName é declarada como um tipo de dados Variant. Se o usuário clicar em Cancelar, essa variável contém um valor booleano (Falso). Caso contrário, FileName é uma string. Portanto, usando um tipo de dados Variant lida com ambas as possibilidades.