Excel VBA – Criar Arquivo de Texto Largura Fixa

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:

  1. Dados: Aonde temos uma tabela com os campos e os dados que desejamos colocar no arquivo texto.
  2. Layout: Temos aqui o layout padrão definindo o tamanho de cada coluna, a ordem e o tipo.
  3. Local: Define o local aonde será gerado o arquivo texto de largura fixa pelo Excel.

Dados:

texto largura fixa 8

Layout

Local

texto largura fixa 7

Layout do Arquivo de Tamanho Fixo

Uma parte importante da solução é a configuração dos campos do arquivo a ser gerado.

texto largura fixa 6

Nesta tabela temos a seguinte estrutura, que você pode alterar incluindo novas linhas e alterando as atuais:

  1. Campo: Nome do campo para ter como referência de qual se trata.
  2. Tipo: Tipo de campo, Fixo para texto fixo, A para alfanumérico, ou seja, texto e N para número.
  3. Tamanho: Tamanho fixo do campo, se aplica a tipos A e N e define o tamanho da coluna no arquivo texto.
  4. Decimal: Define a quantidade de casas decimais para o número, por exemplo 2.
  5. 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/

texto largura fixa 5

Ao clicar no botão será exibido o VBE, Visual Basic Editor.

Nele clique em Inserir->Módulo:

texto largura fixa 4

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.

texto largura fixa 3

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.

texto largura fixa 2

Clique duas vezes sobre o arquivo e veja como ficou ele definido:

texto largura fixa 1

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:

Baixe a planilha


Marcos Rieper

Pai, marido, professor e consultor em Excel.

Obrigado por ler este artigo, este blog foi criado para difundir o conhecimento em Excel à todos.

Divulgamos novos artigos nas redes sociais, basta clicar nos ícones abaixo.

Excel não precisa ser complicado

Assine nossa newsletter e receba dicas práticas para dominar o excel