Notifications
Clear all

Remover Espaços Vazios.

9 Posts
3 Usuários
0 Reactions
1,374 Visualizações
(@mprudencio)
Posts: 2749
Famed Member
Topic starter
 

Boa tarde, estou necessitado de uma rotina (tem que ser em VBA), que elimine os espaços vazios de uma planilha.

Ela pode ter 5 colunas ou 50 e pode ter 100 linhas ou 100000.

Estou automatizando a importação de arquivos txt e a importação funciona perfeitamente, porem deixa os espaços vazios em algumas colunas.

A função ARRUMAR do excel nao me ajuda ja que a intenção é automatizar o processo.

Tentei tb usar application.worksheetfuncion(Trim.... porem nao funcionou.

Aguardo

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/11/2015 1:08 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Prudencio, anexe um modelo reduzido e compactado (Rar, Zip..) conforme as regras do forum, assim ficara mais facil analisar.

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

 
Postado : 08/11/2015 4:16 pm
(@mprudencio)
Posts: 2749
Famed Member
Topic starter
 

Mauro segue os arquivos.

Tem um modelo de TXT e o resultado do arquivo importado.

Porem esse arquivo pode ter mais colunas e mais linhas

Obrigado por enquanto

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/11/2015 4:49 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo, o resultado no arquivo importado você fez manualmente ou ja tem uma rotina ? Se tiver uma rotina poste aqui e quem sabe podemos implementar a supressão dos espaços.

Por enquanto veja se consegue adaptar a rotina abaixo, é só ajustar a propriedade Selection por um loop nas linhas e colunas.

Sub EliminarEspaco()
    Dim sCel As Range
    
    For Each sCel In Selection
        sCel.Value = Trim(sCel.Value)
    Next sCel
    
End Sub

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

 
Postado : 08/11/2015 6:51 pm
(@mprudencio)
Posts: 2749
Famed Member
Topic starter
 

Mauro foi quase pq a rotina esta transformando alguns preços em Texto

Tem alguma ideia de como fazer?

A rotina que estou usando para importar é a que esta neste arquivo.

Que é o arquivo original.

Se a rotina de tratar o texto funcionar é so chamar dentro da rotina do form

Obrigado de novo.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/11/2015 8:43 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo, não sei se entendi corretamente, mas em seus modelos não encontrei nenhuma coluna com espaços nos numeros, então não seria necessário rodar a rotina nas colunas numericas, mas para evitar a conversão para texto temos de multiplicar o resultado por "1" ficando assim : "sCel.Value = Trim(sCel.Value) * 1", mas dai teriamos de adaptar a rotina para colunas numericas e texto.

Quanto ao modelo com a rotina de importação, pelo que vi, ja temos a definição das colunas e nos resultados percebi que são somente duas que temos os espaços, se for isto mesmo, é só ajustar as linhas conforme abaixo :
Para a coluna Descrição ficariam estas duas linhas :
WD.Cells(Ln, Col + 1).Value = Mid$(L, PT2Ini, PT2Fim)
WD.Cells(Ln, Col + 1).Value = Trim(WD.Cells(Ln, Col + 1).Value) 'elimina os espaços

E para a coluna Modelo ficariam estas duas linhas :
WD.Cells(Ln, Col + 6).Value = Mid$(L, PT7Ini, PT7Fim)
WD.Cells(Ln, Col + 6).Value = Trim(WD.Cells(Ln, Col + 6).Value) 'elimina os espaços

Veja se seria isto, faça os testes e qualquer duvida retorne.
[]s

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

 
Postado : 09/11/2015 6:08 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Marcelo, segunda feira é braba, eu havia olhada rapidamente e sugeri a alteração acima, mas revendo novamente, se for isto mesmo o que citei, podemos deixar as linhas referentes a "Descrição e Modelo" em uma só da seguinte forma:

Descrição:
Troque esta :
'WD.Cells(Ln, Col + 1).Value = Mid$(L, PT2Ini, PT2Fim)
por esta :
WD.Cells(Ln, Col + 1).Value = Trim(Mid$(L, PT2Ini, PT2Fim))

Modelo :
Troque esta :
'WD.Cells(Ln, Col + 6).Value = Mid$(L, PT7Ini, PT7Fim)
por esta :
WD.Cells(Ln, Col + 6).Value = Trim(Mid$(L, PT7Ini, PT7Fim))

[]s

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

 
Postado : 09/11/2015 6:41 am
(@nelson-s)
Posts: 96
Trusted Member
 

Não sei se entendi a estrutura do arquivo *.txt de forma correta, mas segue minha colaboração...

 
Postado : 09/11/2015 9:33 am
(@mprudencio)
Posts: 2749
Famed Member
Topic starter
 

Nelson obrigado por sua sugestão, mas nao consegui importar o arquivo que enviei como modelo

Recebo um msgbox que a linha 1 nao tem 120 caracteres

Aguardo

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 09/11/2015 7:40 pm