Aprenda neste arquivo como gerar um arquivo texto de largura fixa em VBA com Excel.
Um formato de arquivo que é normalmente utilizado para comunicação de dados entre empresas e governo ou para importação de dados em sistemas é o arquivo texto tamanho fixo.
Estes arquivos com campos de largura fixa são normalmente feitos em sistemas, mas podemos criá-los no Excel.
No vídeo ao topo e ao longo deste artigo verá uma solução profissional para criação de arquivos textos com tamanho fixo no Excel
Interface da Planilha de Arquivo Texto de Largura Fixa no Excel
A planilha possui uma interface muito prática de utilizar aonde criamos um menu ao topo usando hiperlinks e caixas de texto.
A pasta de trabalho possui duas planilhas e três configurações e tabelas:
- Dados: Aonde temos uma tabela com os campos e os dados que desejamos colocar no arquivo texto.
- Layout: Temos aqui o layout padrão definindo o tamanho de cada coluna, a ordem e o tipo.
- Local: Define o local aonde será gerado o arquivo texto de largura fixa pelo Excel.
Dados:
Layout
Local
Layout do Arquivo de Tamanho Fixo
Uma parte importante da solução é a configuração dos campos do arquivo a ser gerado.
Nesta tabela temos a seguinte estrutura, que você pode alterar incluindo novas linhas e alterando as atuais:
- Campo: Nome do campo para ter como referência de qual se trata.
- Tipo: Tipo de campo, Fixo para texto fixo, A para alfanumérico, ou seja, texto e N para número.
- Tamanho: Tamanho fixo do campo, se aplica a tipos A e N e define o tamanho da coluna no arquivo texto.
- Decimal: Define a quantidade de casas decimais para o número, por exemplo 2.
- Coluna: Identifica para o texto fixo o texto que será colocado e para os demais campos a coluna com os dados de origem, buscando da planilha Dados.
Com isso ao configurar estes campos cada um deles seguirá as regras de tipo e formatação para serem aplicadas no arquivo texto que será gerado.
Como Gerar o Arquivo Texto de Largura Fixa com o VBA
Usando a estrutura que citamos acima nós usamos o seguinte procedimento para colocar o código VBA para gerar o arquivo texto no Excel.
Clique na guia Desenvolvedor e no botão Visual Basic. Caso não apareça a guia no seu Excel habilite seguindo este procedimento: https://www.guiadoexcel.com.br/habilitando-a-guia-desenvolvedor-e-copiando-procedimentos-vba-sub-da-internet/
Ao clicar no botão será exibido o VBE, Visual Basic Editor.
Nele clique em Inserir->Módulo:
Clicando duas vezes sobre ele colamos o código VBA abaixo, que realiza a geração do arquivo texto.
Public Function lfFormata(ByVal lCel As Range) As String
Dim lnTamanho As Long
Dim lnDecimal As Long
Dim lnFixo As String
Dim lUltimaLinha As Long
Dim lLinha As Long
Dim ltValor As String
lUltimaLinha = Layout.Cells(Layout.Rows.Count, 2).End(xlUp).Row
For lLinha = 8 To lUltimaLinha
lnTamanho = Layout.Cells(lLinha, 4).Value
lnDecimal = Layout.Cells(lLinha, 5).Value
lnFixo = Layout.Cells(lLinha, 6).Value
If Layout.Cells(lLinha, 3).Value <> "Fixo" Then
ltValor = Dados.Range(Layout.Cells(lLinha, 6).Value & lCel.Row).Value
Else
ltValor = ""
End If
Select Case Layout.Cells(lLinha, 3)
Case "Fixo"
lfFormata = lfFormata & lnFixo
Case "A"
lfFormata = lfFormata & Left(ltValor & String(lnTamanho, " "), lnTamanho)
Case "N"
lfFormata = lfFormata & Left(Replace(Format(ltValor, "0." & String(lnDecimal, "0")), ",", ".") & String(lnTamanho, " "), lnTamanho)
End Select
Next lLinha
End Function
Public Sub lsGerarDelimitado()
On Error GoTo Erro
Dim lUltimaLinha As Long
Dim lLinha As Long
Dim llArquivo As Long
Dim ltCaminho As String
ltCaminho = Layout.Range("I8").Value
llArquivo = FreeFile
Open ltCaminho For Output As #llArquivo
lUltimaLinha = Dados.Cells(Dados.Rows.Count, 2).End(xlUp).Row
For lLinha = 8 To lUltimaLinha
Print #llArquivo, lfFormata(Dados.Cells(lLinha, 2))
Next lLinha
MsgBox "Arquivo gerado em: " & ltCaminho
Sair:
Close #llArquivo
Exit Sub
Erro:
MsgBox Err.Description
GoTo Sair
End Sub
A função lfFormata, formata o dado conforme o tipo dele, se Fixo, Numérico ou Texto.
E o procedimento lsGerarDelimitado realiza a geração do arquivo texto na pasta definida no sistema.
Clicamos então para salvar e fechar o VBE e retornarmos à interface do Excel.
Criar o Botão e Testar
Para gerar o arquivo iremos criar um atalho de VBA para o procedimento lsGerarDelimitado
No Excel clique com o botão direito sobre o texto Gerar arquivo e com o botão direito em selecione Atribuir Macro e selecione o procedimento lsGerarDelimitado.
E agora já podemos testar.
Clique sobre o Gerar Arquivo, veja que já é criado o arquivo na pasta que definiu em Local do Arquivo na planilha Layout.
Clique duas vezes sobre o arquivo e veja como ficou ele definido:
Download Planilha de Geração de Arquivo Texto Tamanho Fixo VBA Excel
Clique no botão abaixo para realizar o download do arquivo de exemplo: