Excel VBA FreeFile
FreeFile é uma função em VBA que está disponível apenas como uma função VBA, não como uma função de planilha. A função VBA FreeFile retorna o número inteiro exclusivo para o arquivo que é aberto e preserva o número para o próximo número de arquivo disponível.
Normalmente, abrimos arquivos de nosso computador para escrever algo ou apenas para leitura, enquanto nos referimos a esses arquivos, devemos nos referir com um número inteiro único. A função VBA FreeFile nos permite determinar aquele número inteiro exclusivo a ser atribuído para abrir o arquivo para ler, gravar e abrir arquivos usando o VBA.
Agora observe a sintaxe da instrução OPEN.
ABRIR [Endereço do caminho do arquivo] para [Modo para abrir] como [Número do arquivo]
Endereço do caminho do arquivo: Precisamos mencionar o endereço do arquivo em nosso computador que estamos tentando abrir.
Modo de abertura: Ao abrir o arquivo, precisamos estar cientes de que tipo de modelo vamos aplicar. Podemos usar três modos aqui, “Input Mode”, “OutPut Mode” e “Append Mode”.
Modo de entrada para ler apenas o arquivo.
Modo de saída para apagar os dados existentes e inserir novos dados.
Modo anexo para adicionar novos dados enquanto retém os dados existentes.
Número do arquivo: Com este argumento, podemos nos referir ao arquivo que estamos abrindo. Aqui, a função “FreeFile” desempenha um papel vital e retorna o número inteiro único.
Como usar a função FreeFile no Excel VBA?
Você pode baixar este modelo VBA FreeFile Excel aqui - Modelo VBA FreeFile ExcelAgora, olhe para o código abaixo.
Código:
Sub FreeFile_Example1 () Dim Path As String Dim FileNumber As Integer Path = "D: \ Articles \ 2019 \ File 1.txt" FileNumber = FreeFile Abrir caminho para saída como FileNumber Path = "D: \ Articles \ 2019 \ File 2.txt "FileNumber = FreeFile Abrir caminho para saída como FileNumber End Sub
Agora deixe-me decodificar o código acima para você entender.
Primeiro, declarei duas variáveis.
Dim Path As String, Dim FileNumber As Integer
Em seguida, atribuí o caminho do arquivo com seu nome.
Caminho = "D: \ Artigos \ 2019 \ Arquivo 1.txt"
Então, para mais uma variável, atribuí a função FREEFILE.
FileNumber = FreeFile
Em seguida, usei a instrução Open para abrir o arquivo de texto no caminho de arquivo mencionado acima.
Abrir caminho para saída como FileNumber
Ok, agora irei executar o código linha por linha pressionando a tecla F8 e ver o valor da variável “FileNumber”.
Ele está mostrando o número do arquivo como 1. Portanto, a função de arquivo livre reserva automaticamente esse número para o arquivo de abertura. Enquanto isso, nenhum outro arquivo é aberto.
Agora vou continuar executando a próxima linha do código VBA e ver qual é o número do arquivo se pular para a próxima linha.
Agora diz 2. Portanto, a função FreeFile reserva o número inteiro único 2 para o segundo arquivo de abertura.
A função FreeFile sempre retorna 1 se fecharmos o arquivo do Excel
Uma coisa que precisamos observar é a função VBA “FreeFile” sempre retorna 1 se fecharmos o arquivo aberto antes de abrir o segundo arquivo Excel.
Por exemplo, observe o código abaixo.
Código:
Sub FreeFile_Example2 () Dim Path As String Dim FileNumber As Integer Path = "D: \ Articles \ 2019 \ File 1.txt" FileNumber = FreeFile Abrir caminho para saída como FileNumber Fechar FileNumber Path = "D: \ Articles \ 2019 \ File 2 .txt "FileNumber = FreeFile Abrir caminho para saída como FileNumber Close FileNumber End Sub
Agora irei executar novamente o código linha por linha pressionando a tecla F8.
Diz 1, como de costume.
Agora irei progredir para o próximo nível.
Mesmo na segunda tentativa, diz 1.
A razão para isso é que, como usamos a instrução Fechar arquivo, o FreeFile reconhece o arquivo recém-aberto como o novo e retorna o número inteiro como 1.