none
Problema em um objeto html lido por um programa de automação em VBA RRS feed

  • Pergunta

  • Boa tarde!

    Estou com um problema em um código de automação.

    O trecho do código é este:
    ===========================================================================================

    'pega a tabela onde estão as informações
    Set tabela = IE.Document.all("ctl00_ctl00_head_mainProposta_grvTransmissaoAuto")

    'Pega a quantidade de linhas da tabela
    Totallinhatabela = tabela.getElementsByTagName("tr").length - 1

    Set rs1 = New ADODB.Recordset

    For Each linha In tabela.getElementsByTagName("tr")

    If InStr(linha.outerText, "Proposta") = 0 Then

    IE.Document.getElementsByTagName("td")(0).getElementsByTagName("input")(0).Click
    Call SIeBusy(IE, 2)

    Set tabela2 = IE.Document.all("ctl00_ctl00_head_mainProposta_grvDadosTransmissaoAuto")

    For Each linha2 In tabela2.getElementsByTagName("tr")

    If InStr(linha2.outerText, "Erro Complemento") = 0 Then

    linha2.getElementsByTagName("td")(0).getElementsByTagName("input")(0).Click
    Call SIeBusy(IE, 2)

    If IE.Document.all("ctl00_ctl00_head_mainProposta_grvDadosTransmissaoAuto_ctl02_ctl00").Checked Then
    If InStr(IE.Document.all("txtRetornoComplemento").innerText, "CEP") <> 0 Then
    TipoErro = "Erro de CEP"
    ElseIf InStr(IE.Document.all("txtRetornoComplemento").innerText, "Bônus") <> 0 Then
    TipoErro = "Erro de Bônus"
    ElseIf InStr(IE.Document.all("txtRetornoComplemento").innerText, "Chassi") <> 0 Then
    TipoErro = "Erro de Chassi"
    Else
    TipoErro = "Erros Diversos (exemplo data de emissão da NF divergente"
    End If
    Else
    TipoErro = "Erro de Transmissão"
    End If
    'Grava a proposta na tabela de Controle de Execução dos Robôs
    SqlInclui = "INSERT INTO tbl_ControleExecucaoRobos (IDRobo, NrControleExecucao, DtExecucao, StatusExecucao) "
    SqlInclui = SqlInclui & "VALUES (" & IDRobo
    SqlInclui = SqlInclui & ",'" & RTrim(IE.Document.all("ctl00_ctl00_head_mainProposta_txtTituloProposta").innerText)
    SqlInclui = SqlInclui & "',convert(datetime,'" & DateTime.Now & "',103),"
    SqlInclui = SqlInclui & "'" & TipoErro & " ')"
    Set rs1 = cnn.Execute(SqlInclui)

    'Sai da tela de erros
    IE.Document.all("ctl00$ctl00$head$mainProposta$btnFecharPopUp").focus
    IE.Document.all("ctl00$ctl00$head$mainProposta$btnFecharPopUp").Click
    Call SIeBusy(IE, 2)
    End If

    Next


    End If

    Next

    ===========================================================================================

    O problema está nesta linha: IE.Document.getElementsByTagName("td")(0).getElementsByTagName("input")(0).Click

    Ao ler esta linha é gerado o erro de permissão 70 na variável "linha" que está no primeiro For Each e impede que o programa leia as outras linhas da tabela.

    Alguém consegue me dar uma luz do porque isto ocorre?

    Obrigado pela atenção.

    Adriano


    quarta-feira, 14 de dezembro de 2016 18:06