ABRIR TXT E PROCURAR E RETORNAR ITEM ESPECIFICO
[é 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]
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]
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
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
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.
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.
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
Abra a pasta de trabalho e entre no VBA.
Execute o USERFORM e verifique se te ajuda a ter uma ideia
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
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
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
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