Ir ao conteúdo

Excel Transformar txt em xls com condição


Ir à solução Resolvido por Wendell Menezes,

Posts recomendados

Postado

Tenho os 1.txt 2.txt em c:\txt que precisam ser transformados em .xls por vba porém tem a coluna com nome COLUNA1 ou COLUNA2 no txt que tem números iniciando com 0 (zero) e quando vai pro xls o 0 (zero) some.

Tenho o vba que converte txt em xls:

Sub converte_txt_salva_xls()



Dim PathTXT As String

PathTXT = Cells(2, 4).Value  '"C:\txt\" Diretório dos .TXT (com "\" no fim!)

Dim PathXLS As String

PathXLS = Cells(2, 11).Value  '"C:\xlsx\" Diretório dos .XLS (com "\" no fim!)



Dim FSO     As Object

Dim File    As Object

Dim wb      As Workbook



Set FSO = VBA.CreateObject("Scripting.FileSystemObject")



For Each File In FSO.GetFolder(PathTXT).Files

    If Right(LCase(File), 4) = ".txt" Then

        Set wb = Workbooks.Open(File)

        ActiveSheet.Name = "plan1"

        wb.SaveAs PathXLS & Replace(LCase(wb.Name), ".txt", ".xls"), xlWorkbookNormal

        wb.Close False

    End If

Next



End Sub

1.txt 2.txt

Postado

É sempre um único zero? Se for, pode incluir as linhas abaixo após a abertura do .txt em XLS (ou seja, após "Set wb = Workbooks.Open(File)":

 

Range("J:J").NumberFormat = "@"
For r = 6 To Cells(Rows.Count, "J").End(xlUp).Row
	If Cells(r, "J") <> "" Then Cells(r, "J") = "0" & Cells(r, "J")
Next

 

  • Solução
Postado

Essa outra versão procura pelo nome do campo. Notei que o segundo .txt não ficou sem o zero, é porque o campo sempre tem 4 dígitos? Se não for, irá resultar em erro.

 

Sub converte_txt_salva_xls()

Dim PathTXT As String
Dim PathXLS As String
Dim FSO     As Object
Dim File    As Object
Dim wb      As Workbook
Dim Coluna  As Range
Dim r       As Long

PathTXT = Cells(2, 4).Value  '"C:\txt\" Diretório dos .TXT (com "\" no fim!)
PathXLS = Cells(2, 11).Value  '"C:\xlsx\" Diretório dos .XLS (com "\" no fim!)

Set FSO = VBA.CreateObject("Scripting.FileSystemObject")

For Each File In FSO.GetFolder(PathTXT).Files
    If Right(LCase(File), 4) = ".txt" Then
        Set wb = Workbooks.Open(File)
        Set Coluna = Cells.Find("COLUNA1", LookAt:=xlWhole)
        If Coluna Is Nothing Then Set Coluna = Cells.Find("COLUNA2", LookAt:=xlWhole)
            If Not Coluna Is Nothing Then
                Coluna.EntireColumn.NumberFormat = "@"
                For r = 6 To Cells(Rows.Count, Coluna.Column).End(xlUp).Row
                    If Cells(r, Coluna.Column) <> "" Then Cells(r, Coluna.Column) = String(4 - Len(Cells(r, Coluna.Column)), "0") & Cells(r, Coluna.Column)
                Next
            End If
        ActiveSheet.Name = "plan1"
        wb.SaveAs PathXLS & Replace(LCase(wb.Name), ".txt", ".xls"), xlWorkbookNormal
        wb.Close False
    End If
Next

End Sub

 

Postado

Se não houver nada no Excel que determine se precisa ou não de adicionar o zero, então acredito que sua única opção será abrir o txt como texto mesmo e copiar o conteúdo na planilha, algo que não costumo fazer com frequência para poder te ajudar.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!