WET
|
TABOÃO DA SERRA SP - BRASIL
|
|
Postada em 21/03/2012 09:53 hs
Olá amigos bom dia. Preciso de um help. Na verdade, precisaria de um arquivo texto colocar em um excel. Então, achei melhor jogar em uma tabela MDB para facilitar os calculos que deverão ir para o excel. Só que o texto não delimitado por espaços ou vigulas, é uma cópia dos recibos da empresa. Desta forma precisarei achar os campos dentro do texto, então gostaria de ler linha a linha. Fiz o seguinte comando.:
Private Sub Command1_Click() Dim s As String Dim f As Integer f = FreeFile 'Pega o numero do arquivo a ser aberto caso tenha mais de um arquivo aberto. Open Text1.Text For Input As #f ' abre o arquivo Text1.Text = "" Do Until EOF(f) Line Input #f, s Text2.Text = Text1.Text + s Loop Close #f ' fecha o arquivo 'ls_Grava End Sub
Mas ele traz como se fosse apenas uma linha, abri o arquivo em um editor de texto Editplus e nele aparece várias linha com a quebra de linha com o chr(13) Enter, o VB esta entendendo apenas uma linha. Desta forma fica complicado pegar o que preciso. Veja parte do arquivo como aparece.
-------------+ | Folha de Pagamento 03/02/2012 11:58:15 | | Apelido: 02 Razao Social: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX Pag:1| |----------------------------------------------------------------------------------------------------------------------------| | C.N.P.J./CEI:XXXXXXXXXXXXXXXXXX Inscricao: xxxxxxxxxxxxxxxxxxxxxxxx Periodo de: 01/01/2012 a 31/01/2012| | Endereco:xxxxxxxxxxxxxxxxxx Bairro:xxxxxxxxxxxxxxxxxx Cidade:xxxxxxxxxxxxxxxx UF: SP | +----------------------------------------------------------------------------------------------------------------------------+ +----------------------------------------------------------------------------------------------------------------------------+ | Setor: 9 - RETIFICA | +----------------------------------------------------------------------------------------------------------------------------+
Neste excemplo preciso pegar apenas o Setor e colocar 9 na minha tabela, e ai por diante.
Alguem poderia me ajudar?
Obrigado.
|
|
|
|
|
Postada em 21/03/2012 10:17 hs
Amigo,
O erro não é do VB.
você fez a seguinte linha: Text2.Text = Text1.Text + s
Observe que nas propriedades de Text2, deve-se colocar a propiredade MultiLine configurada como True, senão fica uma linha apenas. Confira se está True a propriedade MultiLine de Text2.
Também convém colocar o caracter de retorno no final da instrução, ficando da seguinte forma:
Text2.Text = Text1.Text + s + VBKeyReturn
Tente e, caso não consiga, volte a postar que a gente encontra a solução.
Abraços.
|
|
|
WET
|
TABOÃO DA SERRA SP - BRASIL
|
|
Postada em 21/03/2012 10:22 hs
Olá Zeuzebio. Em primeiro lugar, obrigado pela resposta. No text2 eu coloquei multline, quando digo apresenta uma só linha é que laço ele passa apenas uma vez, desta forma fica dificil pegar os campos desejado. Coloquei a instrução que mandou e me apareceu a seguinte mensagem.
Type mismatch
Obrigado.
|
|
|
Tiranossauro
não registrado
|
|
Postada em 21/03/2012 11:59 hs
Do Until EOF(f) Line Input #f, s Text2.Text = Text1.Text & replace(s, vbcrlf, " ") Loop
|
|
|
WET
|
TABOÃO DA SERRA SP - BRASIL
|
|
Postada em 21/03/2012 12:24 hs
Amigos, não sei se expressei corretamente.
Tiranossauro, a solução que apresentou, não deu erro, mas continua passando apenas uma vez no laço e retornando no text2 o texto completo, preciso que ele monte linha a linha. linha 1 = +----------------------------------------------------------------------------------------------+ linha 2 = | Folha de Pagamento 03/02/2012 11:58:15 | linha 3 = +----------------------------------------------------------------------------------------------+ linha 4 = | Setor: 9 - RETIFICA |
E desta forma eu possa quando no laço passar a linha 4 eu pegar na posição logo após a palavra Setor, pegue o numero 9 e grave na tabela mdb, e assim por diante.
Mas, obrigado a todos que já responderam e que possam ainda me ajudar.
|
|
|
Treze
|
SÃO VICENTE SP - BRASIL
|
|
Postada em 21/03/2012 14:28 hs
Bom vou tentar explicar o vb não entende como apenas uma linha, é que vc exibe apenas uma linha.
substitua o TextBox Por u listbox e veja o resultado
Private Sub Command1_Click() Dim s As String Dim f As Integer Dim Linhas() As String f = FreeFile 'Pega o numero do arquivo a ser aberto caso tenha mais de um arquivo aberto. Open Text1.Text For Input As #f ' abre o arquivo Text1.Text = "" Do Until EOF(f) Line Input #f, s Linhas = Split(s, vbCrLf) For F = 0 To UBound(Linhas) List1.AddItem Linhas(f) Nextf Loop Close #f ' fecha o arquivo 'ls_Grava End Sub
não sei como vai aparecer mas teste e diga como ficou outra maneira seria usar o richtextbox.
porque disto? porque o loop só vai apresentar a ultima linha, ou seja ele coloca a primeira linha no textbox, porém em seguida substitui esta pela segunda linha e assim sucessivamente até a ultima linha.
|
TÓPICO EDITADO
|
|
|
|
|