Erro em Formatação de arquivo CSV exportado via VBA

Visual Basic for Aplication e macros no Excel.
Regras do fórum
Sua dúvida foi respondida? Marque como RESOLVIDO em seus tópicos, usando o botão com marca verde. Imagem

Erro em Formatação de arquivo CSV exportado via VBA

Mensagempor saulopef » Sáb Ago 12, 2017 12:11 am

Olá, sou novato no forum, e ja chego pedindo uma baita ajuda :D
possuo um sistema de análise de dados (Análise da atividade elétrica do coração), tais dados são provenientes de uma leitura feita por um eletrocardiograma que salva os dados (em Milisegundos) em um arquivo CSV, com uma unica coluna, e cada dado em uma linha diferente, utilizei uma planilha do Excel para realizar a limpeza destes dados, pois em muitos casos podem ocorrer o que chamamos de "interpolação" que são dados idênticos em sequência, quando isto ocorre as linhas que contem estes dados precisam ser excluídas. Exemplo:

[A]
[1] 0.800
[2] 0.833 (interpolado)
[3] 0.833 (interpolado)
[4] 0.870

neste caso as linhas [2] e [3] precisam ser excluídas, restando:

[A]
[1] 0.800
[2] 0.870

Para fazer isto, usei uma baita gambiarra no VBA mas que está funcionando muito bem:
Na Coluna "b" é inserida uma função "SE" que verifica se o valor da célula é igual ao da célula acima dela ou abaixo, se for, retorna como "interpolado" se não for, deixa a célula vazia (" ")
no vba criei uma sub que exclui a linha inteira se na coluna "b" constar o valor "interpolado", e no final desta Sub a coluna "b" é excluída.

Este processo esta funcionando para mim, mas sei que isso é gambiarra, se houver outro meio de faze-lo mais facilmente, estou aceitando sugestões.

Agora vamos ao problema de fato

Trabalho com centenas destes arquivos, e o sistema apenas reconhece arquivos CSV, porem ao invés de utilizar Virgulas como separador, ele utiliza ponto e virgula, já li e reli mil vezes que o VBA utiliza os padrões regionais e de idiomas para formatar o CSV, e por isso vai utilizar VIRGULA, Vamos ao Código;

Código: Selecionar todos
Sub ExportCVS()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    template_file = ActiveWorkbook.FullName

    fileSaveName = Range("G1").Value
    Columns("A:H").Delete

    If fileSaveName = False Then
        Exit Sub
    End If

    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add

    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)

    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next

    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlCSV, _
                          CreateBackup:=False, TextCodepage:=True, local:=True

    'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing

    'MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
    Range("A:A") = ""
    Application.ScreenUpdating = True
End Sub


Nesse código, a planilha é copiada para um arquivo do excel em branco que é salvo no lugar original do arquivo CSV, com o mesmo nome, e é ai que o problema acontece, ao abrir o novo arquivo gerado no sistema de análise, este apesenta erro pois o formato está incorreto, ao abrir o arquivo csv no bloco de notas encontro o erro ele está como neste exemplo:

0.800,,,,,
0.870,,,,,
0.890,,,,,
0.880,,,,,


ai está o erro, foram salvas mais 4 colunas, desnecessárias, eu imagino que estas colunas estejam lá pois utilizo imagens como botões na planilha para chamar cada macro, uma possibilidade que imagino resolver seria ao invés de copiar toda a planilha, copiar apenas a coluna A para a nova planilha, mas ja tentei alterar o código para:

ThisWorkbook.ActiveSheet.Range("A:A").Copy Before:=newBook.Sheets(1)
ou
ThisWorkbook.ActiveSheet.Column("A:A").Copy Before:=newBook.Sheets(1)

Mas não funcionou, a solução temporária que utilizo é, abrir arquivo por arquivo, e substituir as 5 virgulas por um espaço vazio, e então assim o sistema consegue ler os arquivos corretamente.
então, o que eu preciso:
copiar apenas a Coluna A para a nova planilha, ou apagar todas estas virgulas sem a necessidade de fazer arquivo por arquivo.
desculpa pela novela escrita aqui, mas como eu disse se alguém souber uma alternativa para a primeira gambiarra, todo o resto pode ser alterado.
vou deixar a planilha e um arquivo CSV em anexo como exemplo. Abraços...
InterpolationCleaner.xlsm

014.csv
Você não está autorizado a ver ou baixar esse anexo.
saulopef
Membro
Membro
 
Mensagens: 1
Registrado em: Sex Ago 11, 2017 11:08 pm
Has thanked: 0 time
Have thanks: 0 time

{ SO_SELECT }

Re: Erro em Formatação de arquivo CSV exportado via VBA

Mensagempor WRSouza » Dom Ago 27, 2017 12:00 pm

Boa tarde Saulo, tudo bem?
Vi sua planilha e consegui salvar o arquivo de modo que não necessite copiar a mesma planilha e salvar... Aqui, eu criei uma matriz que armazenará os valores e a lançará em um novo arquivo e nisso, ele irá descarregar os valores e em seguida salvará. Peço que dê uma olhada.
Você não está autorizado a ver ou baixar esse anexo.
WRSouza
Membro
Membro
 
Mensagens: 8
Registrado em: Dom Mai 08, 2016 9:10 am
Has thanked: 0 time
Have thanks: 0 time


Voltar para VBA & Macros

Quem está online

Usuários navegando neste fórum: Google Adsense [Bot], klarc28 e 7 visitantes