Notifications
Clear all

Distribuir partes de texto importado para outras planilhas

8 Posts
2 Usuários
0 Reactions
1,694 Visualizações
(@fneves)
Posts: 4
Active Member
Topic starter
 

Pessoal
Sou novo aqui e descobri uma macro que faz a importação de txt automaticamente, postada pelo alexandrevba.
Sub ImportarTXT()
Dim Campos As Variant
Dim Arquivo As String
Dim i As Long, j As Long

'Contador de linhas
i = 2
'abre um "mini" explorer de arquivos
Arquivo = Application.GetOpenFilename("Arquivos Texto(*.txt), *.txt")
'abre o arquivo texto
Open Arquivo For Input As #1
'Enquanto não chega ao fim do arquivo
While Not (EOF(1))
'Captura 1 linha e armazena na variável Linha
Line Input #1, linha
'separa os campos e armazena na variável "Campos"
Campos = Split(linha, "|")
'Distribui os campos na planilha
For j = 0 To UBound(Campos)
Cells(i, j + 1).Value = Campos(j)
Next
'incrementa uma linha
i = i + 1
Wend
'fecha o arquivo texto
Close #1
MsgBox "Fim de execução da macro"
End Sub

Muito boa! Parabéns. Porém preciso que ela insira o número de cada linha importada e distribua os dados importados para outras planilhas da pasta de trabalho, atendendo a alguns critérios.
Alguém pode me ajudar?

Obrigado

 
Postado : 14/02/2012 9:40 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!!

Porém preciso que ela insira o número de cada linha importada e distribua os dados importados para outras planilhas da pasta de trabalho, atendendo a alguns critérios.

Olá, acho é preciso mais detalhes...

Quais e quantas são as planilhas?

Quais os critérios?

Att

 
Postado : 15/02/2012 5:21 am
(@fneves)
Posts: 4
Active Member
Topic starter
 

Boa noite Alexandre
Exemplo do arquivo texto:
|0000|002|0|||01012012|31012012|NOME|87654093000192|ES|31325309||00|2|
|0001|0|
|0100|nome do responsaveil|08988938993|RR9999999-9||31987280|NOME DA RUA|269||CENTRO|4287654800|4287493480|[email protected]|7699999|
|0110|3|2|1|
|0111|4251311,98|542042,96|0|0|4793354,94|
|0140|04|NOMEDEQUEM GEROUAINFORMACAO|86366363636366454|766666666|9854388|||
|0150|SA10405289892|DFSDFSFSFSFDFSDFSDSFS|1058||99999999990||2787609||RUA MMMMMMMM|14||KKKKKK LLLLLE|
|0400|2102|TEXTO DA OPERA|
|0400|5102|IUTROTEXTOOPERACIONE|
|0990|11002|
|A001|1|
|A990|2|
|C001|0|
|C010|22222222222222|1|
|C100|0|1|SA104MAPBH104|01|00|1|139816||02012012|02012012|129,9|9|0|0|129,9|9|0|0|0|129,9|22,08|0|0|0|2,14|9,87|0|0|
|C170|1|9999999999999|NOMEPRODUTO|1|PC|129,9|0|0|000|1202|1202|129,9|17|22,08|0|0|0|0|||0|0|0|50|129,9|1,65|||2,14|50|129,9|7,6|||9,87||
|C100|0|1|SA10411444901|01|00|1|139819||02012012|02012012|59,96|9|0|0|59,96|9|0|0|0|59,96|10,19|0|0|0|0,99|4,56|0|0|
|C170|1|789136172|XIC CHA QUARTIERE|4|PC|59,96|0|0|000|1202|1202|59,96|17|10,19|0|0|0|0|||0|0|0|50|59,96|1,65|||0,99|50|59,96|7,6|||4,56||
|C990|31991|
|D001|0|
|D010|88888888888888|
|D500|0|1|S22288888 01|21|00|||3984|12012012|23012012|5,26|0|5,26|0|0|0|0|0||0|0|
|F01|0|
|F10|99999999999999|
|F00|0|1|SA9999941 01|21|00|||3984|12012012|23012012|5,26|0|5,26|0|0|0|0|0||0|0|
|M001|0|
|M010|66666666666666|
|M500|0|1|S87878781 01|21|00|||3984|12012012|23012012|5,26|0|5,26|0|0|0|0|0||0|0|
|1001|0|
|1010|77777777777777|
|1500|0|1|TTTT77777 01|21|00|||3984|12012012|23012012|5,26|0|5,26|0|0|0|0|0||0|0|
|9001|0|
|9010|23333333333333|
|9500|0|1|KJ7777771 01|21|00|||3984|12012012|23012012|5,26|0|5,26|0|0|0|0|0||0|0|

Esses dados são importados para o Excel na Pan1 e os registros que começam com 0(zero) devem ser copiados na Plan2, os que começam com A para a Plan3, os que começam com C para a Plan4, com D para a Plan5, com F para a Plan6, com M para a Plan7, com 1 para a Plan8 e com 9 para a Plan9.
Desde já fico grato pelo interesse e ajuda

 
Postado : 15/02/2012 8:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!!

Só te serve por meio de VBA.

Caso contrário baixe o anexo.

Dê retorno! :)

 
Postado : 16/02/2012 5:13 pm
(@fneves)
Posts: 4
Active Member
Topic starter
 

Muito Obrigado Alexandre

 
Postado : 16/02/2012 8:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!!

Vamos tentar via VBA, mas terá adaptar ...
Autor:Chris

Sub ClickNaMãozinha()
    Dim lr                              As Long
    Dim lrOutWs                         As Long
    Dim ws                              As Worksheet
    Dim sWsOutname                      As String
    Dim i                               As Long
    Dim j                               As Long
    Dim vArrSplitter                    As Variant

    Set ws = Worksheets("Plan1")
    For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
  

        Select Case Mid(ws.Cells(i, 1), 2, 1)
        Case "0"
            sWsOutname = "Plan2"
        Case "A"
            sWsOutname = "Plan3"
        Case "C"
            sWsOutname = "Plan4"
        Case "D"
            sWsOutname = "Plan5"
        Case "F"
            sWsOutname = "Plan6"
        Case "M"
            sWsOutname = "Plan7"
        Case "1"
            sWsOutname = "8"
        Case "9"
            sWsOutname = "Plan9"
        Case Else
            sWsOutname = "ERROS"
        End Select

     

        lrOutWs = Worksheets(sWsOutname).Cells(Worksheets(sWsOutname).Rows.Count, 1).End(xlUp).Row

        Worksheets(sWsOutname).Row(lrOutWs + 1).Value = ws.Rows(i).Value
        
        vArrSplitter = Split(ws.Cells(i, 1), "|")
        For j = 1 To UBound(vArrSplitter()) - 1
            Worksheets(sWsOutname).cels(lr + 1, j) = vArrSplitter(j)
        Next j

    Next i
    
    Set ws = Nothing
End Sub

Caso resolva favor marcar o tópico como resolvido. ;)

 
Postado : 17/02/2012 6:13 pm
(@fneves)
Posts: 4
Active Member
Topic starter
 

Boa noite Alexandre

A execução deu erro em tempo de execucao '438'. O objeto não aceita esta propriedade ou método, nesse ponto da execução

Worksheets(sWsOutname).Row(lrOutWs + 1).Value = ws.Rows(i).Value.
sWsOutname = 'Plan2' e
lrOutWs = 1

Não sei como tratar esse erro.
Tem como ajudar-me?

Obrigado

 
Postado : 28/02/2012 8:43 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom ia!!!

Fneves, veja se o arquivo baixo te ajuda.

 
Postado : 29/02/2012 5:01 am