Я боролся с проблемой макроса, который использует 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