Página 1 de 1

Split no VBA

Enviado: 07 Set 2016 às 22:41
por JanilsonBrito
Senhores, boa noite, gostaria de saber se alguém pode me ajudar. tenho o seguinte codigo abaixo. o mesmo faz importação de varios arquivos em *.TXT todos no seguinte formato.

performance;aberturaonlinemvs1;hora;06092016;05:23

gostaria de saber se utilizando o mesmo codigo abaixo, posso separar as colunas conforme o delimitador ";" e colocar a data no formato dd/mm/aaaa. Desde ja agradeço.

ao importar o arquivo gostaria que o mesmo ficasse assim
A B C D E G
performance aberturaonlinemvs1 hora 06/09/2016 05:23 relat_abertura_online.txt


Sub ImportarTXT()
Dim Pasta As String
Dim Arquivo As String
Dim Linha As String
Dim i As Long

Pasta = "C:\RELATORIOS\TXT\"
Arquivo = Dir(Pasta & "*.txt")
i = 1
Do
Open Pasta & Arquivo For Input As #1
While Not (EOF(1))

Line Input #1, Linha
Cells(i, "A").Value = Split(Linha, ";") 'NA COLUNA A COLOCAR performance
Cells(i, "B").Value = Split(Linha, ";") 'NA COLUNA B COLOCAR aberturaonlinemvs1
Cells(i, "C").Value = Split(Linha, ";") 'NA COLUNA C COLOCAR hora
Cells(i, "D").Value = Split(Linha, ";") 'NA COLUNA D COLOCAR 06/09/2016 (SEPARANDO OS NUMEROS POR "/")
Cells(i, "E").Value = Split(Linha, ";") 'NA COLUNA A COLOCAR 05:23
Cells(i, "G").Value = Arquivo 'NA COLUNA G COLOCAR O NOME DO ARQUIVO
i = i + 1
Wend
Close
Arquivo = Dir
Loop While Arquivo <> ""
End Sub

Re: Duvidas em usar o split no vba

Enviado: 08 Set 2016 às 10:01
por Reinaldo
Experimente/teste
Código: Selecionar todos
Sub ImportarTXT()
Dim Pasta As String
Dim Arquivo As String
Dim Linha As String
Dim i As Long
Dim myArray

Pasta = "C:\RELATORIOS\TXT\"
Arquivo = Dir(Pasta & "*.txt")
i = 1
Do
Open Pasta & Arquivo For Input As #1
While Not (EOF(1))

Line Input #1, Linha
myArray = Split(Linha, ";")
For x = LBound(myArray) To UBound(myArray)
    If x = 3 Then
    'SEPARANDO OS NUMEROS POR "/"; montando em MM/DD/YYYY que é melhor aceito no vba
        Cells(i, x + 1).Value = VBA.Mid(myArray(x), 3, 2) & "/" & VBA.Left(myArray(x), 2) & "/" & VBA.Mid(myArray(x), 5, 4)
    Else
        Cells(i, x + 1).Value = myArray(x) 'NA COLUNA A COLOCAR
    End If
Next
i = i + 1
Wend
Close
Arquivo = Dir
Loop While Arquivo <> ""
End Sub

Split no VBA

Enviado: 09 Set 2016 às 18:43
por JanilsonBrito
Reinaldo ficou show de bola, apenas mais duas duvidas :D :D :D !!
Adaptei ao seu código colocando como inicio de execução um outro que tenho que localiza a primeira linha em branco, para que eu consiga importar os dados do arquivo txt na próxima linha em branco sem matar a anterior, pelo que percebi mesmo ele localizando a primeira linha em branco, sempre importa para a primeira linha da pasta, sobrepondo o que ja havia importado.
A outra duvida é: como colocar o nome do arquivo que importei na célula "G" por exemplo: (porque disso, as vezes recebo um arquivo e o usuário coloca uma virgula, um dado a mais, e na hora que vou popular minha planilha, acabo melando todos meus gráfico, desta forma antes de popular consigo ver se tem algum dado errado e em qual arquivo.)

Dados de como recebo o arquivo: (performance;aberturaonlinemvs1;hora;06092016;05:23)
nome do arquivo: relat_abertura_online.txt

NA COLUNA A COLOCAR a palavra: performance ==> OK
NA COLUNA B COLOCAR a palavra: aberturaonlinemvs1 ==> OK
NA COLUNA C COLOCAR a palavra: hora ==> OK
NA COLUNA D COLOCAR os dados: 06/09/2016 (SEPARANDO OS NUMEROS POR "/") ==> OK
NA COLUNA E COLOCAR os dados: 05:23 ==> OK
NA COLUNA G COLOCAR O NOME DO ARQUIVO : relat_abertura_online.txt




Sub localizarlinhabranco()
Range("A1").Select
Linha = 1
celula = ActiveCell.Value
While celula <> ""
ActiveCell.Offset(1, 0).Activate
celula = ActiveCell.Value
Linha = Linha
Wend
End Sub

Split no VBA

Enviado: 09 Set 2016 às 20:54
por Reinaldo
No inicio de sua rotina (do primeiro topico), há uma linha que "faz" --> i=1; e essa declaração que define onde sera iniciado a "importação"
Nessa ultima rotina, a variavel linha sempre será um, pois é feito a igualdade Linha=Linha.
Experimente alterar para --> Linha=Linha+1