none
Macro localiza e monta relatório RRS feed

  • Pergunta

  • Senhores, boa tarde, faz tempo que trabalho com o excel mas não consigo me entender muito bem com a parte de macros, por isso gostaria muito de ajuda. Tenho vários arquivos (txt) gerados por um software onde preciso gerar um relatório localizando o que preciso para montar o relatório. 

    o arquivo que é gerado é o seguinte:

    <Computer>
      <Client_version>9.4.0</Client_version>
      <Computer_name>KKKKKK</Computer_name>
      <Computer_comment>S46</Computer_comment>
      <General_info>
        <Operating_system>
          <Name>Microsoft Windows XP Professional</Name>
          <Major_version>5</Major_version>
          <Minor_version>1</Minor_version>
          <Build_number>2600</Build_number>
          <Platform_ID>2</Platform_ID>
          <Additional_information>Service Pack 3</Additional_information>
          <User_name>Administrador</User_name>
          <Boot_time>01/22/2013 12:52:20</Boot_time>
          <Registered_to>siscon</Registered_to>
          <Registered_organization/>
          <Registration_code>76503-OEM-0027883-74399</Registration_code>
          <Locale>Português (Brasil)</Locale>
    RJVQW</Product_key>
          <Domain></Domain>
          <Install_date>08/07/2008 03:02:13</Install_date>
          <Windows_components>
            <Component>
              <Name>Serviços de rede</Name>
              <ID>2</ID>
              <Parent_ID>-1</Parent_ID>
              <Description>Contém diversos serviços e protocolos especializados relacionados a redes.</Description>
            </Component>
            <Component>
              <Name>Cliente de descoberta/contr. de disp. de gateway da Internet</Name>
              <ID>9</ID>
              <Parent_ID>2</Parent_ID>
              <Description>Permite encontrar e controlar o hardware e o software da conexão compartilhada com a Internet que usam UPnP(TM).</Description>
            </Component>

    .....

    ele é bem maior que isso e tenho que pesquisar no arquivo todo.  O que preciso geral é algo parecido com isso:

    Computer_name -
    Usuário
    Sistema Operacional Microsoft Windows 7 Professional 32-bit
    Atualização -


    Placa Mãe - Modelo G41-M7
    Placa Mãe - Fabricante BIOSTAR Group
    Processador Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz
    Memória 2 GB
    HD Modelo ST320DM000-1BD14C
    HD Capacidade 320 GB
    Placa de Video RDPDD Chained DD
    Placa de Rede NIC Fast Ethernet PCI-E Realtek FamÍlia RTL8102E/RTL8103E (NDIS 6.20)
    Periférico DVDRAM GH22NS40

    Será que alguém poderia me dar uma ajuda neste intuito.

    desde já agradeço.

    sexta-feira, 8 de março de 2013 18:12

Respostas

  • Tente algo como:

    Sub fExemplo()
        Dim iFF As Integer
        Dim sLinha As String
        Dim lIni As Long
        Dim lLin As Long
        Dim lTam As Long
        Dim lFim As Long
        
        iFF = FreeFile
        
        Columns("A").ClearContents
        Open "c:\temp\data.txt" For Input As iFF
        Do While Not EOF(iFF)
            Line Input #iFF, sLinha
            sLinha = Trim(sLinha)
            If InStr(sLinha, "</") > 1 Then
                lLin = lLin + 1
                
                'Nó:
                lIni = InStr(sLinha, "<") + 1
                lFim = InStr(sLinha, ">")
                lTam = lFim - lIni
                Cells(lLin, "A") = Mid(sLinha, lIni, lTam)
            
                'Valor do nó:
                lIni = InStr(sLinha, ">") + 1
                lFim = InStr(sLinha, "</")
                lTam = lFim - lIni
                Cells(lLin, "B") = Mid(sLinha, lIni, lTam)
                
            End If
        Loop
            
        Close iFF
    
    End Sub

    No entanto, se quiser uma leitura XML mais eficiente, veja: http://www.ambienteoffice.com.br/officevba/importar_dados_de_arquivos_xml/


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 12 de março de 2013 22:10
    Moderador