Boa tarde todos,
Estou com problemas para importar varios arquivos texto para uma planilha excel, usando VBA direto do excel.
Não consegui selecionar varios arquivos para serem lidos. Uma outra opção é selecionar somente a pastar e o codigo vba varrer a pastar e ler todos os arquivos texto que la estiverem e depois move-los para uma pasta LIDO.
Outra questão é que o codigo que consegui ajustar esta inserindo algumas linhas em branco no excel.
O código é o seguinte:
Sub ImportacaoTextoBBApl()
Dim ConteudoDaLinha As String
Dim VarConta As String
Dim VarMes As String
Dim VarContaTitulo As String
Dim VarAplNome As String
Dim VarRend As String
Dim VarIR As String
Dim VarIOF As String
Open "C:\ImportarTexto\21.076 21244-X 202212.txt" For Input As #1 ' Abre o Arquivo
'COMO FAZER PARA ABRIR UM DIRETORIO NA MAQUINA E O USUARIO SELECIONAR VARIOS ARQUIVOS TEXTOS DE UMA SO VEZ?
'NA PLANILHA GERADA ESTA SENDO INCLUSAS VARIAS LINHAS EM BRANCO. É POSSIVEL NÃO INSERIR ESTAS LINHAS?
'Range("A2:F5000").Value = Empty
Range("A2").Select
VarConta = ""
ConteudoDaLinha = ""
VarMes = ""
VarContaTitulo = ""
VarAplNome = ""
Do While EOF(1) = False
Line Input #1, ConteudoDaLinha 'Alimenta a variavel com o conteudo da linha correte do txt
'Cells(ActiveCell.Row, 1) = Mid(ConteudoDaLinha, 1, 200)
If Mid(ConteudoDaLinha, 1, 3) <> " " Or Mid(ConteudoDaLinha, 1, 3) <> "---" Then
If Mid(ConteudoDaLinha, 1, 3) = "Con" Then
VarConta = Mid(ConteudoDaLinha, 22, 10)
Cells(ActiveCell.Row, 1) = VarConta
End If
If Mid(ConteudoDaLinha, 1, 3) = "Mês" Then
VarMes = Mid(ConteudoDaLinha, 22, 14)
Cells(ActiveCell.Row, 1) = VarMes
End If
If Mid(ConteudoDaLinha, 37, 4) = "CNPJ" Then
VarAplNome = Replace(Mid(ConteudoDaLinha, 1, 56), " ", "")
Cells(ActiveCell.Row, 1) = VarAplNome
End If
If Mid(ConteudoDaLinha, 6, 1) = "/" And Mid(ConteudoDaLinha, 13, 7) = "SALDO A" Or Mid(ConteudoDaLinha, 13, 7) = "RESGATE" Or Mid(ConteudoDaLinha, 13, 7) = "APLICAÇ" Or Mid(ConteudoDaLinha, 13, 7) = "SALDO A" Then
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = Mid(ConteudoDaLinha, 1, 10) ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = Mid(ConteudoDaLinha, 13, 7) ' Historico da operação
Cells(ActiveCell.Row, 6) = Replace(Mid(ConteudoDaLinha, 40, 15), ".", "") ' Valor do Lançamento
End If
' Codigo para Buscar o Rendimento
If Mid(ConteudoDaLinha, 1, 21) = "RENDIMENTO BRUTO (+)" Then
VarRend = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarRend ' Valor do Lançamento
End If
' Codigo para Buscar o IRRF
If Mid(ConteudoDaLinha, 1, 21) = "IMPOSTO DE RENDA (-)" Then
VarIRRF = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "IRRF S/ RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarIRRF ' Valor do Lançamento
End If
' Codigo para Buscar o IOF
If Mid(ConteudoDaLinha, 1, 21) = "IOF (-)" Then
VarIOF = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "IOF S/ RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarIOF ' Valor do Lançamento
End If
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 'Pula de Linha na Planilha
End If
Loop
Close 1
Estou com problemas para importar varios arquivos texto para uma planilha excel, usando VBA direto do excel.
Não consegui selecionar varios arquivos para serem lidos. Uma outra opção é selecionar somente a pastar e o codigo vba varrer a pastar e ler todos os arquivos texto que la estiverem e depois move-los para uma pasta LIDO.
Outra questão é que o codigo que consegui ajustar esta inserindo algumas linhas em branco no excel.
O código é o seguinte:
Sub ImportacaoTextoBBApl()
Dim ConteudoDaLinha As String
Dim VarConta As String
Dim VarMes As String
Dim VarContaTitulo As String
Dim VarAplNome As String
Dim VarRend As String
Dim VarIR As String
Dim VarIOF As String
Open "C:\ImportarTexto\21.076 21244-X 202212.txt" For Input As #1 ' Abre o Arquivo
'COMO FAZER PARA ABRIR UM DIRETORIO NA MAQUINA E O USUARIO SELECIONAR VARIOS ARQUIVOS TEXTOS DE UMA SO VEZ?
'NA PLANILHA GERADA ESTA SENDO INCLUSAS VARIAS LINHAS EM BRANCO. É POSSIVEL NÃO INSERIR ESTAS LINHAS?
'Range("A2:F5000").Value = Empty
Range("A2").Select
VarConta = ""
ConteudoDaLinha = ""
VarMes = ""
VarContaTitulo = ""
VarAplNome = ""
Do While EOF(1) = False
Line Input #1, ConteudoDaLinha 'Alimenta a variavel com o conteudo da linha correte do txt
'Cells(ActiveCell.Row, 1) = Mid(ConteudoDaLinha, 1, 200)
If Mid(ConteudoDaLinha, 1, 3) <> " " Or Mid(ConteudoDaLinha, 1, 3) <> "---" Then
If Mid(ConteudoDaLinha, 1, 3) = "Con" Then
VarConta = Mid(ConteudoDaLinha, 22, 10)
Cells(ActiveCell.Row, 1) = VarConta
End If
If Mid(ConteudoDaLinha, 1, 3) = "Mês" Then
VarMes = Mid(ConteudoDaLinha, 22, 14)
Cells(ActiveCell.Row, 1) = VarMes
End If
If Mid(ConteudoDaLinha, 37, 4) = "CNPJ" Then
VarAplNome = Replace(Mid(ConteudoDaLinha, 1, 56), " ", "")
Cells(ActiveCell.Row, 1) = VarAplNome
End If
If Mid(ConteudoDaLinha, 6, 1) = "/" And Mid(ConteudoDaLinha, 13, 7) = "SALDO A" Or Mid(ConteudoDaLinha, 13, 7) = "RESGATE" Or Mid(ConteudoDaLinha, 13, 7) = "APLICAÇ" Or Mid(ConteudoDaLinha, 13, 7) = "SALDO A" Then
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = Mid(ConteudoDaLinha, 1, 10) ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = Mid(ConteudoDaLinha, 13, 7) ' Historico da operação
Cells(ActiveCell.Row, 6) = Replace(Mid(ConteudoDaLinha, 40, 15), ".", "") ' Valor do Lançamento
End If
' Codigo para Buscar o Rendimento
If Mid(ConteudoDaLinha, 1, 21) = "RENDIMENTO BRUTO (+)" Then
VarRend = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarRend ' Valor do Lançamento
End If
' Codigo para Buscar o IRRF
If Mid(ConteudoDaLinha, 1, 21) = "IMPOSTO DE RENDA (-)" Then
VarIRRF = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "IRRF S/ RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarIRRF ' Valor do Lançamento
End If
' Codigo para Buscar o IOF
If Mid(ConteudoDaLinha, 1, 21) = "IOF (-)" Then
VarIOF = Replace(Mid(ConteudoDaLinha, 30, 18), ".", "")
Cells(ActiveCell.Row, 1) = VarConta
Cells(ActiveCell.Row, 2) = VarMes
Cells(ActiveCell.Row, 3) = VarAplNome
Cells(ActiveCell.Row, 4) = "31/12/2022" ' Informa da data do lançamento
Cells(ActiveCell.Row, 5) = "IOF S/ RENDIMENTO DE APLICACAO FINANCEIRA" ' Historico da operação
Cells(ActiveCell.Row, 6) = VarIOF ' Valor do Lançamento
End If
Cells(ActiveCell.Row + 1, ActiveCell.Column).Select 'Pula de Linha na Planilha
End If
Loop
Close 1