ABRIR TXT E PROCURAR E RETORNAR ITEM ESPECIFICO

JRAFAEEL 10/08/2012 16:56:25
#407738
[é VBA]
Boa tarde a todos!

é o seguinte ... estou tentando elaborar um código, mas sem sucesso, para obter linhas específicas em um código. Segue o texto para entenderem o que eu preciso:

<xs:schema xmlns=[Ô][Ô] xmlns:xs=[Ô]http://www.w3.org/2001/XMLSchema[Ô] xmlns:msdata=[Ô]urn:schemas-microsoft-com:xml-msdata[Ô]>
<xs:element name=[Ô]Table1[Ô]>
<xs:complexType>
<xs:sequence>
<xs:element name=[Ô]Material[Ô] type=[Ô]xs:string[Ô] msdata:targetNamespace=[Ô][Ô] minOccurs=[Ô]0[Ô] />
<xs:element name=[Ô]Quantidade[Ô] type=[Ô]xs:int[Ô] msdata:targetNamespace=[Ô][Ô] minOccurs=[Ô]0[Ô] />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name=[Ô]tmpDataSet[Ô] msdata:IsDataSet=[Ô]true[Ô] msdata:MainDataTable=[Ô]Table1[Ô] msdata:UseCurrentLocale=[Ô]true[Ô]>
<xs:complexType>
<xs:choice minOccurs=[Ô]0[Ô] maxOccurs=[Ô]unbounded[Ô] />
</xs:complexType>
</xs:element>
</xs:schema>) €<diffgr:diffgram xmlns:msdata=[Ô]urn:schemas-microsoft-com:xml-msdata[Ô] xmlns:diffgr=[Ô]urn:schemas-microsoft-com:xml-diffgram-v1[Ô]>
<tmpDataSet>
<Table1 diffgr:id=[Ô]Table11[Ô] msdata:rowOrder=[Ô]0[Ô]>
[txt-color=#e80000] <Material>Bl. Inteiro</Material>
<Quantidade>13</Quantidade>[/txt-color]
</Table1>
<Table1 diffgr:id=[Ô]Table12[Ô] msdata:rowOrder=[Ô]1[Ô]>
[txt-color=#e80000] <Material>Bloco 1/2</Material>
<Quantidade>6</Quantidade>[/txt-color]
</Table1>
<Table1 diffgr:id=[Ô]Table13[Ô] msdata:rowOrder=[Ô]2[Ô]>
[txt-color=#e80000] <Material>Bloco 1/4</Material>
<Quantidade>4</Quantidade>[/txt-color]
</Table1>
<Table1 diffgr:id=[Ô]Table14[Ô] msdata:rowOrder=[Ô]3[Ô]>
[txt-color=#e80000] <Material>Bloco 1/8</Material>
<Quantidade>13</Quantidade>[/txt-color]
</Table1>
<Table1 diffgr:id=[Ô]Table15[Ô] msdata:rowOrder=[Ô]4[Ô]>
[txt-color=#e80000] <Material>Bloco 3/4</Material>
<Quantidade>7</Quantidade>[/txt-color]
</Table1>
<Table1 diffgr:id=[Ô]Table16[Ô] msdata:rowOrder=[Ô]5[Ô]>
[txt-color=#e80000] <Material>TE50</Material>
<Quantidade>7</Quantidade>[/txt-color]
</Table1>
</tmpDataSet>

ISSO NÃO é UM XML!! ESTÁ APENAS ESTRUTURADO COMO UM!! (e não pode ser convertido em um pois existe criptografia antes e depois da parte que aparece o XML que são necessárias para outros aplicativos e, se converter para xml, o mesmo se torna inválido para utilização devido ao fato de não reconhecer os caracteres iniciais e finais)

Preciso de ajuda para elaborar o script que obtenha o texto e a quantidade que está entre os <Materiais> </Materais> e <Quantidade> </Quantidade>, respectivamente.
Após obter o texto, deverá estruturar no EXCEL em uma coluna a descrição obtida em MATERIAIS e na célula adjacente a descrição obtida em QUANTIDADE.

Além disso, preciso também que o código identifique o título do arquivo de texto que ele abriu e coloque numa terceira coluna (adjacente as outras que receberam as informações) o nome do arquivo.

Será de imagem a ajuda isso, pois eu não estou conseguindo fazer o código pesquisar dinamicamente todas as linhas e obter a informação exata ...

Obrigado


[txt-color=#e80000][txt-size=1]ATENÇÃO! ATUALIZAÇÃO NO POST! VEJA O POST #2 PARA MAIORES DETALHES!![/txt-size][/txt-color]
ALEVALE 10/08/2012 17:48:37
#407739
Bom mas sel ele está estruturado como XML pq não utiliza ele como XML ? Ficaria bem mais fácil ou até mesmo pq não cria ele como XML.
O que você vai ter que fazer é percorrer linha por linha do arquivo TEXTO

Creio eu que seja VB6 não especificou então:

Private Function fncVerificar()
Set fso = CreateObject([Ô]scripting.filesystemobject[Ô])

If fso.FileExists([Ô]SEU ARQUIVO[Ô]) = True Then
Set fso = New Scripting.FileSystemObject
Set arq = fso.OpenTextFile([Ô]SEU ARQUIVO[Ô])

[ô]VERIFICA SE EXISTE A ENTRADA EXISTE
Do While Not arq.AtEndOfStream
If InStr(arq.ReadLine, [Ô]LINHA A PROCURA[Ô]) Then
Else
msgbox([Ô][Ô])
Exit Function
End If
Loop
End If
End Function
JRAFAEEL 10/08/2012 18:39:14
#407742
N.S.: estou usando VBA

Alevale, obrigado pela sua resposta e me ajudou a identificar um erro no meu script que seguia o mesmo raciocínio que o seu. Mas agora me deparo com outro problema: serão diversos arquivos que deverão ser abertos, pesquisados as chaves Materiais e Quantidades e fechados... Não tenho a menor ideia de como fazer isso!

O padrão dos arquivos segue da seguinte maneira:
P01-9.txt
P01-14.txt
P02-14.txt
P11-19.txt
P15-9.txt
P15-14.txt
P15-19.txt

Então ... como determino um loop para abrir cada arquivo desses e o código (que segue o mesmo padrão do postado pelo usuário Alevale) ser executado? Lembrando que todos os arquivos estarão armazenados em uma mesma pasta, para facilitar a localização do arquivo!

Obrigado.
FILMAN 10/08/2012 20:48:16
#407754
Cara tenrta isso aqui

Abra a pasta de trabalho e entre no VBA.
Execute o USERFORM e verifique se te ajuda a ter uma ideia
JRAFAEEL 11/08/2012 12:28:36
#407769
Boa tarde Filman,

Em tese o seu código funciona, mas acontece que preciso de algo mais dinâmico, se tratnado que a lista de arquivos será de mais de 1000 ... Preciso que o código leia, automaticamente, uma por uma, identifique os MATERIAIS E QUANTIDADES e lançe no Excel. Todos os arquivos estarão localizados em uma mesma pasta, o que torna a referência mais facil ... Na teoria eu preciso de um código que vá até uma pasta, identifique todos os arquivos e comece a lê-los um por um, e entre uma leitura e outra ele extrai os dados e joga no excel.

A função [ô]GetOpenFileName[ô] não pode selecionar múltiplos arquivos, mas existe alguma outra que faça isso?


Obrigado
FILMAN 11/08/2012 14:43:40
#407772
Sim meu amigo pode selecionar varios arquivos

Observe que o último parametro passado na função esta como FALSE é só mudar para TRUE só que ai você terá que trabalhar com VETOR


Veja esse exemplo que fiz
Tópico encerrado , respostas não são mais permitidas