Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
Por DavisonDiego
Posts
#114
Boa tarde pessoal

Gostaria de um auxilio de vocês, tenho um arquivo Sped Fiscal, o mesmo é TXT e separado por "|" consigo importa-ló para o excel o problema meu é o seguinte na hora de exportar para o txt novamente, pois quando vou exporta-lo ele perde a estrutura do arquivo, porque quando escolho a opção para exportar com ponto e virgula ele preenche em branco os campos com ";", por exemplo a linha do arquivo tem os seguintes dados:

|0110|1|1|1||
|0140|1|SUPERMERCADO|07443593000196|MG|7073469140038|3170701|||
|0150|236|CEMIG DISTRIBUICAO S/A|1058|06981180010116||0623211360087|3106200||AV. BARBACENA||||

Quando o arquivo é importado ele é importado corretamente, porém na hora de exportar ele está preenchendo com espaços em branco a 1ª linha conforme abaixo, pois quando exporto estou escolhendo a opção csv ponto e virgula e depois no bloco de notas substituo os ";" por "|":


0110|1|1|1||||||
0140|1|SUPERMERCADO|07443593000196|MG|7073469140038|3170701|||
0150|236|CEMIG DISTRIBUICAO S/A|1058|06981180010116||0623211360087|3106200||AV. BARBACENA


Se alguém já passou por isso encontraram uma outra maneira de exportar?

Desde já agradeço a atenção
Avatar do usuário
Por laennder
Avatar
#116
Davison, tudo bem?

Se você puder anexar um modelo da sua planilha e do arquivo. Facilita na hora de tentar criar uma solução.
Por DavisonDiego
Posts
#122
Boa tarde Alexandre já até tentei desta forma mas o problema é que o layout do arquivo não coincide de ter coluna com coluna é tipo assim para cada tipo de bloco do arquivo tem os campos específicos então está acontecendo como na 1ª linha ter somente 3 campos e na segunda ter 10 e como o segundo campo tem 10 o excel está exportando mais 7 campos em branco para a primeira linha como o exemplo abaixo:

|0110|1|1|1||
|0140|1|SUPERMERCADO|07443593000196|MG|7073469140038|3170701|||
|0150|236|CEMIG DISTRIBUICAO S/A|1058|06981180010116||0623211360087|3106200||AV. BARBACENA||||

Exportado


0110|1|1|1||||||
0140|1|SUPERMERCADO|07443593000196|MG|7073469140038|3170701|||
0150|236|CEMIG DISTRIBUICAO S/A|1058|06981180010116||0623211360087|3106200||AV. BARBACENA
Avatar do usuário
Por laennder
Avatar
#125
Davison, isso ocorre porque o Excel exporta uma área retangular.

Dá pra criar uma macro pra fazer o que você quer, mas somente se existir um padrão. Por exemplo, Sempre a primeira linha tem 5 campos, a segunda e terceira tem 8, etc... Ou, a cada 10 linhas, a linha possui 3 campos, as demais linhas possui 6 campos.

Se existir esse padrão, informe qual é, para facilitar.
Por DavisonDiego
Posts
#127
Bom dia Laennder o padrão até existe o problema é que são muitos registros e cada um tem um padrão especifico acho que se fosse fazer desta maneira ia demorar muito tempo para criar a macro, mas de qualquer forma agradeço sua atenção
Avatar do usuário
Por alexandrevba
Avatar
#129
Bom dia!!

Tenta essa macro.
Código: Selecionar todos
Sub ExpExcelTxt()
Dim SrcRg As Range
Dim CurrRow As Range
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim DataTextStr As String

ListSep = "|"
Set SrcRg = ActiveSheet.UsedRange

Open "C:\Users\alexandreVBA\Downloads\ArqExp.txt" For Output As #1

For Each CurrRow In SrcRg.Rows
    CurrTextStr = ""
    For Each CurrCell In CurrRow.Cells
        CurrTextStr = CurrTextStr & CurrCell.Value & ListSep
    Next
    While Right(CurrTextStr, 1) = ListSep
        CurrTextStr = Left(CurrTextStr, Len(CurrTextStr) - 1)
    Wend
    CurrTextStr = CurrTextStr & ListSep
    Print #1, CurrTextStr
Next
Close #1
End Sub
favor mudar o local onde deseja salvar o arquivo exportado!
Código: Selecionar todos
Open "C:\Users\alexandreVBA\Downloads\ArqExp.txt" For Output As #1
Att
Por DavisonDiego
Posts
#132
Bom dia Alexandre a sua macro ficou muito bom vai me ajudar muito só notei um erro na exportação que foi na questão do primeiro "|" no começo do layout conforme abaixo teria como colocar um "|" no começo?

|0000|003|0|||01022015|28022015|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|3170701||00|9|
|0001|0|
|0100|VERDI LUCIO MELO|19237138687|32591||37062300|RUA RAMIRO REZENDE|15||REZENDE|3532144647||contato@verdicontabilidade.com.br|3170701|
|0110|2||1||
|0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|7073688320086|3170701|||

Exportado:

0000|003|0|||01022015|28022015|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|3170701||00|9|
0001|0|
0100|VERDI LUCIO MELO|19237138687|32591||37062300|RUA RAMIRO REZENDE|15||REZENDE|3532144647||contato@verdicontabilidade.com.br|3170701|
0110|2||1|
0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|7073688320086|3170701|

desde já agradeço sua atenção
Por DavisonDiego
Posts
#133
Bom dia Alexandre teve um outro campo que desconfigurou tbm foi nesta linha:

Original:

|0110|2||1||
|0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|7073688320086|3170701|||

Exportado:

0110|2||1|
0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553000141|MG|7073688320086|3170701|
Avatar do usuário
Por alexandrevba
Avatar
#134
Bom dia!!

Veja se essa linha ajuda
No lugar de
Código: Selecionar todos
Print #1, CurrTextStr
Use....
Código: Selecionar todos
Print #1, ListSep & CurrTextStr
Att
Avatar do usuário
Por laennder
Avatar
#135
Como a solução se deu em VBA, movi o tópico para a categoria Macros e VBA
Por DavisonDiego
Posts
#136
Bom dia Alexandre o 1º campo deu certo agora teve um outro campo que desconfigurou também foi no último campo tem como acertar este campo? pois ele é um campo em branco no arquivo original:

Original:

|0110|2||1||
|0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553100141|MG|7073688310086|3170701|||

Exportado:

|0110|2||1|
|0140|285|PALA MATERIAIS PARA CONSTRUCAO LTDA ME|07538553100141|MG|7073688310086|3170701|

Agradeço desde já
Avatar do usuário
Por laennder
Avatar
#153
Todas as linhas vão ter esse campo em branco no final?
Por DavisonDiego
Posts
#156
Bom dia Laenner

a maioria sim porque funciona o seguinte

cada registro tem seu nº de campos especificos as vezes nem todos são obrigatórios serem preenchidos pode ser que uma linha contenha 3 campos e branco no final e outro cinco isso pode variar segue em anexo um arquivo para você ter uma ideia

Obrigado
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por laennder
Avatar
#169
Mas aí volta lá pro que eu disse antes. Tem que especificar qual é o padrão. Quantos campos tem cada tipo de registro?

O Excel exporta no formato retangular, considerando em branco os campos vazios nessa região. Ou a macro do Alexandre verifica até onde tem dados preenchidos para criar o TXT.

Especifica o seguinte, por exemplo: Registros D001 tem X campos, registros D100 tem Y campos, que ai dá pra configurar a macro.
Por DavisonDiego
Posts
#170
Boa tarde Laenner o problema é o seguinte o Layout do arquivo é muito grande tem mais de 100 blocos com diferentes tamanhos cada 1 a macro que o Alexandre criou quase deu certo só deu erro no final os campos que estava em branco teve campo que ficou faltando gerar um pipe da uma olhada no código que ele me passou por gentileza quase deu certo use esse arquivo que te passei que você vai ver acho que a terceira aparece um erro desse.

Agradeço desde já sua atenção
Obrigado
Avatar do usuário
Por laennder
Avatar
#178
Davison, criei um arquivo para importar e exportar os dados.

Ao abrir o arquivo em anexo, perceba que na Faixa de Opções irá aparecer uma nova guia.
Imagem

Clique em importar e selecione o arquivo que deseja trabalhar. Ao importar, os dados serão colocados na planilha. Note que a Coluna A ficará oculta, pois é nela que está salvo a quantidade de campos que possui o registro (útil na hora de salvar)

Depois é só clicar em salvar, e escolher onde deseja salvar o novo arquivo. Acho que agora irá atender ao que deseja.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por laennder
Avatar
#184
Davison, se a resposta resolveu a dúvida, favor clicar no botão "Marcar Resolvido".

Grato.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord