Notifications
Clear all

SALVAR EM CSV COM ";" OU EM TXT DIRETO

4 Posts
2 Usuários
0 Reactions
1,301 Visualizações
(@guimatheus)
Posts: 30
Eminent Member
Topic starter
 

Pessoal, bom dia.

Eu tenho uma macro na planilha "INCLUSÃO DE ENCARGOS - Atrasos de 28.02.2018" na aba "Resultados para Inclusão" que ela salva em arquivo de excel normal (xlsx) e depois ele pega essa planilha e salva em CSV separado por vírgula, para que eu possa fazer manualmente a troca de "," por ";", em seguida eu troca "." por "," e finalmente a troca da data também (mm/dd para dd/mm).
Ou seja, o arquivo final que eu quero é o TXT, e eu faço três etapas para conseguir ele pronto.

Depois que eu faço essas substituições no arquivo CSV, eu copio e colo eles no arquivo TXT, porque não consigo salvar diretamente em TXT do jeito que eu gostaria.

Portanto eu tenho algumas duvidas, se eu consigo melhorar esse processo, porque eu não consegui.
- É possível salvar diretamente em TXT com as regras citadas ali em cima ? Sendo assim, não será necessário usar o arquivo CSV.
- Caso não seja possível salvar diretamente no TXT, é possível apagar os dados na planilha CSV antes de colar os novos dados e depois fazer as substituições dos caracteres mencionados ?

Outra dúvida, ao tentar salvar a mesma planilha em CSV ao invés de substituir a existente, ela não salva separado por virgula igual a original, alguém sabe porque ?

Obs.: O arquivo txt tem que ter aquele formato separado daquela maneira, pois ele é importado em outro software.
Obs2.: Salvar todos os arquivo em uma única pasta, e alterar o endereço na macro, para que ela funcione corretamente.

Arquivos: https://drive.google.com/open?id=150-UB ... 8J55TuOnNS

Obrigado!

 
Postado : 15/03/2018 8:36 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se auxilia

Sub GeraTxt()
Dim Caminho As String, Arquivo As String, Dados As String
Dim Linha As Integer
'Local onde será salvo arquivo txt, neste caso mesmo diretoria da planilha
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Nome atribuido ao arquivo txt
Arquivo = "Exportar_Excel_pTxt.txt"
'Abre o txt pára gravação
Open Caminho & Arquivo For Output As #1
'Direciona para planilha a ser exportada
Worksheets("TB_COMP_RECEB_PARTICIP").Activate
'indica linha que inicia dados
Linha = 1
'Inicia looping pela linhas da planilha
Do Until IsEmpty(ActiveCell.Offset(0, 0))
    'Concatena os dados separados por ";"
    Dados = Cells(Linha, 1) & ";" & Cells(Linha, 2) & ";" & Cells(Linha, 3) & ";" & Cells(Linha, 4) & ";" & Cells(Linha, 5) & ";" & Cells(Linha, 6)
    Print #1, Dados
    Linha = Linha + 1
    If Cells(Linha, 1) = Empty Then Exit Do
Loop
        
'Fecha o arquivo txt
Close #1
End Sub

ou

Sub GeraTxt_ou()
Dim Caminho As String, Arquivo As String
Dim uCol As Long, uLin As Long
Dim Linha As Integer
'Local onde será salvo arquivo txt, neste caso mesmo diretoria da planilha
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Nome atribuido ao arquivo txt
Arquivo = "Exportar_Excel_pTxt.txt"
'Abre o txt pára gravação
Open Caminho & Arquivo For Output As #1

'Direciona para planilha a ser exportada
With Worksheets("TB_COMP_RECEB_PARTICIP")
'indica linha que inicia dados
        
' Informação da ultima linha
uLin = .Cells.SpecialCells(xlLastCell).Row
' Informação da ultima coluna
uCol = .Cells.SpecialCells(xlLastCell).Column

'Inicia looping pela linhas da planilha
For Linha = 1 To uLin
    'Inicia looping pelas colunas da planilha
    For Coluna = 1 To uCol
     'Concatena os dados separados por ";"
        If Coluna = uCol Then
            Dados = Dados & .Cells(Linha, Coluna)
        Else
            Dados = Dados & .Cells(Linha, Coluna) & ";"
        End If

    Next
    Print #1, Dados
Dados = ""
Next
End With
'Fecha o arquivo txt
Close #1
End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/03/2018 11:40 am
(@guimatheus)
Posts: 30
Eminent Member
Topic starter
 

Veja se auxilia

Sub GeraTxt()
Dim Caminho As String, Arquivo As String, Dados As String
Dim Linha As Integer
'Local onde será salvo arquivo txt, neste caso mesmo diretoria da planilha
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Nome atribuido ao arquivo txt
Arquivo = "Exportar_Excel_pTxt.txt"
'Abre o txt pára gravação
Open Caminho & Arquivo For Output As #1
'Direciona para planilha a ser exportada
Worksheets("TB_COMP_RECEB_PARTICIP").Activate
'indica linha que inicia dados
Linha = 1
'Inicia looping pela linhas da planilha
Do Until IsEmpty(ActiveCell.Offset(0, 0))
    'Concatena os dados separados por ";"
    Dados = Cells(Linha, 1) & ";" & Cells(Linha, 2) & ";" & Cells(Linha, 3) & ";" & Cells(Linha, 4) & ";" & Cells(Linha, 5) & ";" & Cells(Linha, 6)
    Print #1, Dados
    Linha = Linha + 1
    If Cells(Linha, 1) = Empty Then Exit Do
Loop
        
'Fecha o arquivo txt
Close #1
End Sub

ou

Sub GeraTxt_ou()
Dim Caminho As String, Arquivo As String
Dim uCol As Long, uLin As Long
Dim Linha As Integer
'Local onde será salvo arquivo txt, neste caso mesmo diretoria da planilha
Caminho = ThisWorkbook.Path & Application.PathSeparator
'Nome atribuido ao arquivo txt
Arquivo = "Exportar_Excel_pTxt.txt"
'Abre o txt pára gravação
Open Caminho & Arquivo For Output As #1

'Direciona para planilha a ser exportada
With Worksheets("TB_COMP_RECEB_PARTICIP")
'indica linha que inicia dados
        
' Informação da ultima linha
uLin = .Cells.SpecialCells(xlLastCell).Row
' Informação da ultima coluna
uCol = .Cells.SpecialCells(xlLastCell).Column

'Inicia looping pela linhas da planilha
For Linha = 1 To uLin
    'Inicia looping pelas colunas da planilha
    For Coluna = 1 To uCol
     'Concatena os dados separados por ";"
        If Coluna = uCol Then
            Dados = Dados & .Cells(Linha, Coluna)
        Else
            Dados = Dados & .Cells(Linha, Coluna) & ";"
        End If

    Next
    Print #1, Dados
Dados = ""
Next
End With
'Fecha o arquivo txt
Close #1
End Sub

Mas eu não entendi, eu coloco isso no meio daquela macro inteira que eu tenho ? Porque é necessário salvar TB_COMP_RECEB_PARTICIP e TB_PARCELA, cada um tem um formato diferente.
Outra duvida, O nome do arquivo eu coloco TB_COMP_RECEB_PARTICIP e TB_PARCELA ?
Porque cada um tem colunas diferentes, conforme macro Salvar_CSV é executada.

Obrigado pela breve ajuda !

 
Postado : 16/03/2018 6:59 am
(@guimatheus)
Posts: 30
Eminent Member
Topic starter
 

Cara, ficou ÓTIMO! Eu testei aqui, e deu pra salvar nas duas planilhas certinho, na verdade eu tenho que abrir as planilhas TB_COMP_RECEB_PARTICIP e TB_PARCELA para salvar os dados no TXT, ficou muito bom ! Depois eu fecho automaticamente.

Uma duvida, eu percebi que o TXT sempre fica com uma ultima linha em branco, tem como apagar ela ?
E tem como limpar o arquivo TXT antes de começar a copiar os dados ? Porque de repente, se eu tiver novos dados e tiverem menos quantidade de linhas, ele vai acabar ficando com uma quantidade maior do que deveria, correto ?

Obrigado !!

 
Postado : 16/03/2018 7:29 am