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 próximo número de arquivo disponível.
Normalmente, abrimos arquivos de nosso computador para escrever algo ou para somente 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, dê uma olhada na sintaxe da instrução OPEN.
ABRIR (endereço do caminho do arquivo) para (modo de 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 saber que tipo de modelo vamos aplicar. Podemos usar três maneiras aqui, "Modo de entrada", "Modo de saída" e "Modo de anexo".
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 - onde a função “FreeFile” desempenha um papel vital e retorna o número inteiro único.
Como usar a função FreeFile no Excel VBA?
Agora, 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 do 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 um 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.