Notifications
Clear all

Macro trava e não roda em outro pc

3 Posts
2 Usuários
0 Reactions
1,653 Visualizações
(@pipipitchu)
Posts: 2
New Member
Topic starter
 

Pessoal,

Estou com um problema em uma macro que fiz.

Preciso acompanhar alguns processos na internet, daí a minha macro entra no site, procura as informações que preciso e atualizar na planilha. Como o número de processos pode ir de uma até 200, eu criei uma sub e mandei executar como loop até encontrar uma linha vazia.

Ela funciona e me ajuda muito, mas estou com alguns problemas que não consigo resolver, revisei a lógica e também algumas coisas no código (não sei muito sobre vba), e não encontrei nenhuma causa para os problemas, que são estes:

1- A macro trava:
-Ao executar fica processando ou começa a atualizar as informações, mas depois algumas atualizações a macro trava e abre a janela dando erro de tempo de execução (erro de automação, erro não especificado).
-Depois de duas ou três tentativas a macro é executada normal e todas as informações são atualizadas.

2- A macro não roda em outro PC:

- A macro executa no meu pc, mas testei em outros dois computadores e não executava de jeito algum... inclusive instalei o mesma versão do excel e não adiantou.

Alguém tem alguma idéia do que pode estar acontecendo?
* Coloquei o arquivo em anexo já com alguns processos.

Grato.

 
Postado : 12/12/2014 11:53 am
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

Experimente assim:
Habilitar em referencias --> Microsoft Internet Controls

Sub Processo()
Dim cont As Integer
Dim iE As InternetExplorer
Dim Tabela As Object
Dim linha
Dim Tramite As String, Inf As String, Divisao As String
Dim Valor As String, Processo As String
cont = 2
Sheets("Plan1").Activate
Do
    Set iE = New InternetExplorer
    With iE
        .navigate "http://www.gdfnet.df.gov.br/sicop/busca/"
        .Visible = False
  
        While .Busy Or .ReadyState <> READYSTATE_COMPLETE
            DoEvents
        Wend
     End With
    iE.document.all("NU_ORGAO").innertext = ActiveSheet.Cells(cont, 1)
    iE.document.all("NU_PROCESSO").innertext = ActiveSheet.Cells(cont, 2)
    iE.document.all("NU_ANO").innertext = ActiveSheet.Cells(cont, 3)
  
    iE.document.all("Consultar").Click
  
    While iE.Busy Or iE.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Wend
    Set Tabela = iE.document.all.tags("table")(0)
     
    For Each linha In Tabela.all.tags("tr")
        Inf = linha.all.tags("td")(0).innertext
        If Inf = " Processo" Then
            Processo = linha.all.tags("td")(1).innertext
        End If
        If Inf = " Tramitação" Then
            Tramite = linha.all.tags("td")(1).innertext
        End If
         If Inf = " Divisão" Then
            Divisao = linha.all.tags("td")(1).innertext
        End If
        'linha.MoveNext
    Next linha
    
    Cells(cont, 4) = Divisao
    Cells(cont, 5) = Tramite
    Cells(cont, 6) = Processo
    iE.Quit
    Do While iE.Busy
    Loop
    cont = cont + 1
Loop Until IsEmpty(Cells(cont, 3))
MsgBox "rodou até linha:= " & cont
End Sub

Reinaldo

 
Postado : 12/12/2014 1:47 pm
(@pipipitchu)
Posts: 2
New Member
Topic starter
 

Ficou muito bom agora, o problema era só a habilitação do microsoft internet controls, ou também tinha problema nas partes do código que você mudou?

Obrigado!

 
Postado : 13/12/2014 6:31 am