Internet Explorer VBA автоматизация работает на всех, кроме 1 компьютера - PullRequest
0 голосов
/ 28 мая 2018

Я боролся с проблемой макроса, который использует IE для открытия веб-страницы и загрузки значений из таблицы в Excel.Макрос отлично работает на всех компьютерах моих коллег, кроме 1, на работе.Я не могу понять, почему его компьютер ведет себя так, как он работает, поскольку на нем должны быть все те же настройки и установки, что и у нас (я работаю в более крупной компании).

ОБНОВЛЕНИЕ: весь код включен, но удален URL, так как вам нужен логин / пароль для доступа к URL в любом случае.

Для нас, других пользователей, код работает нормально, во время работы макроса мы видим только индикатор выполнения.Мы не можем видеть, как открывается IE-окно и так далее, так как это делается в фоновом режиме.Но для другого пользователя окно Internet Explorer появляется в части «ie.navigate url», и макрос останавливается либо на «IE.Busy», либо на «IE.Document», так как кажется, что IE невыполняется ..

У нас одинаковые версии Excel и Internet Explorer, Windows и т. д. Те же ссылки проверяются в VBA. Но каким-то образом его Excel может распознавать IE.Navigate, но после этого он не может контролироватьIE-приложение ..

У кого-нибудь была похожая проблема или есть какие-либо предложения по поводу того, что я могу попробовать?

Спасибо.

Option Explicit
Sub Grupp_3()

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    Dim IE As Object
    Dim tbls, tbl, trs, tr, tds, td, r, c
    Dim countery2 As Long
    Dim ANTAL As Long
    Dim TID, radhopp, MGAKODER, TYPER, NAMN, countery, row, 
    MGAKOD, TYP 
    Set IE = CreateObject("internetexplorer.application")

    On Error GoTo ErrMsg

    ActiveWorkbook.Sheets("IMPORT").Select
    Range("A239:I306").ClearContents

    Radhopp = Range("O31").Value
    Set KODER = Range("Q31:Q34")
    countery = 1
    ANTAL = 4

    UpdateProgressBar 0, ANTAL

    For Each Row In KODER.Cells

        ActiveWorkbook.Sheets("IMPORT").Select

        IE.navigate "real URL here"

        ' Wait while IE loading...
        Do While IE.Busy
            Application.Wait DateAdd("s", TID, Now)
        Loop

        Set tbls = IE.Document.getElementsByTagName("table")

        For r = 0 To tbls.Length - 1
            Debug.Print r, tbls(r).Rows.Length
        Next r

        Set tbl = IE.Document.getElementById("TABLE_OVERVIEW")
        Set trs = tbl.getElementsByTagName("tr")

        For r = 0 To trs.Length - 1

            Set tds = trs(r).getElementsByTagName("td")
            'if no  then look for
            If tds.Length = 0 Then Set tds = trs(r).getElementsByTagName("th")

            For c = 0 To tds.Length - 1
                ActiveSheet.Cells(Radhopp, 1).Offset(r, c).Value = tds(c).innerText
            Next c
        Next r
countery2 = countery
UpdateProgressBar countery2, ANTAL


countery = countery + 1
Radhopp = Radhopp + 17
ActiveWorkbook.Sheets("Grupp 3").Select
Next Row

Range("N1").Value = Now
Application.StatusBar = ""

IE.Quit
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Exit Sub
ActiveWorkbook.Sheets("Grupp 3").Select

ErrMsg:
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox ("Error, check that you're logged on in IE"), , "OK"
Application.StatusBar = ""
IE.Quit
ProgressBar.Hide
ActiveWorkbook.Sheets("Grupp 3").Select
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...