Notifications
Clear all

OtherDelimiter - alterar configuração inicial

11 Posts
2 Usuários
0 Reactions
2,594 Visualizações
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Pessoal, eu tenho um código vba que permite importar txt e separar as informações, porém eu gostaria de saber se é possível inserir mais delimitadores?

informações presentes no arquivo txt teste:

<cadastro><produto>mesa</produto><cor>branco</cor><unidade>PC</unidade><ano>2017</ano></cadastro>

o meu código separa as informações em cada coluna, delimitador utilizado para separar as informações "<"

quando eu aplico o código os dados ficam assim na planilha (informaçõaes separadas por coluna) (Conforme exemplo anexo)

o código removeu o sinal "<" inicial de cada campo, porém eu gostaria de saber como posso fazer para remover todos os sinais.

meu código é esse:

.TextFileOtherDelimiter = "<"

tem como deixar ele assim:

.TextFileOtherDelimiter = "<","/",">"

quando eu iniciar o código as informações devem aparecer assim na planilha (Conforme exemplo anexo)

as informações foram separadas por colunas.

muito obrigado.

 
Postado : 08/02/2018 6:07 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se a rotina abaixo ajuda, faça os ajustes :

Fonte: https://stackoverflow.com/questions/319 ... delimiters
Parsing txt file into Excel with multiple delimiters

Sub ParseData()
    Dim FileSpec As String, TextLine As String
    Dim RowNumber As Long
    folder = "C:TestFoldertextfiles"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(folder)
    RowNumber = 1
    Close #1

    For Each file In folder.Files
        FileSpec = folder & "" & file.Name
        Open FileSpec For Input As #1
        Do While Not EOF(1)
            Line Input #1, TextLine
            TextLine = Replace(TextLine, "+", "-")
            If InStr(TextLine, "-") = 0 Then
                Cells(RowNumber, 1) = TextLine
            Else
                ary = Split(TextLine, "-")
                ccol = 1
                For Each a In ary
                    Cells(RowNumber, ccol) = a
                    ccol = ccol + 1
                Next a
            End If
            RowNumber = RowNumber + 1
        Loop
        Close #1
    Next file
End Sub

[]s

 
Postado : 08/02/2018 10:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Voce tambem pode optar pelo "SPLIT", segue dicas de funcções :

How to Split a String with Multiple Delimiters in VBA
https://www.experts-exchange.com/articl ... n-VBA.html

[]s

 
Postado : 08/02/2018 11:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Muito bom os links Mauro.
Como adicional http://www.cpearson.com/excel/splitondelimiters.aspx

 
Postado : 08/02/2018 1:09 pm
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Obrigado a todos pela atenção.

Eu observei todos os links mencionados, mas como eu ainda estou aprendendo sobre vba então ficou meio confuso os códigos dos links.

Então eu criei um outro procedimento que deleta os sinais, porém o problema agora é apenas separar as informações por colunas.

os códigos importam e removem os sinais, porém as informações não são separadas.

Em anexo, seguem os arquivos.

muito obrigado pela atenção de todos.

 
Postado : 08/02/2018 2:51 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não consigo descompactar o arquivo, da msg de corrompido.

 
Postado : 08/02/2018 6:06 pm
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Estou enviando no formato zip.

 
Postado : 09/02/2018 4:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

JNEXCEL, seu txt modelo não possui alguns campos conforme seu post inicial (tipo Unidade e Ano),
esses arquivos variam em conteúdo em relação a "campos"?

 
Postado : 09/02/2018 6:10 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Experimente e comente

 
Postado : 09/02/2018 6:50 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Respondendo a sua pergunta anterior.

Isso, exatamente.

as informações são variadas, ou seja, podem estar entre <cadastro><produto>mesa</produto></cadastro> como também em <cadastro><produto>mesa</produto><unidade>UN</unidade></cadastro>

Eu tenho o código para remover todos os sinais: </> independente de quantas vezes ele aparece na planilha.

porém eu agora não estou conseguindo separar as informações por colunas, antes era separar e remover os sinais, agora é apenas separa por colunas.

Com relação ao seu novo arquivo.

Eu vou baixar e fazer um teste, muito obrigado

 
Postado : 09/02/2018 8:05 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Reinaldo, ficou perfeito. Muito obrigado pela ajuda

Agradeço também ao Mauro Coutinho, pela atenção e colaboração.

Muito obrigado a todos.

 
Postado : 09/02/2018 8:13 am