powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Internet Explorer ошибка
4 сообщений из 4, страница 1 из 1
VBA Internet Explorer ошибка
    #37903272
makkostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу с помощью VBA организовать работу с браузером - открыть страницу, понажимать на кнопки и т. д.. На конкретном примере:
Первая страница - авторизация. Ввожу логин и пароль, нажимаю на кнопку:
Код: html
1.
<input id="e6" class="button b" type="button" value="Login" onclick="post(this.id,event);">


После этого открывается другая страница (во всяком случае визуально) и там есть тег <Select>:
Код: html
1.
2.
3.
4.
<select id="e27" class="mainmenu" onchange="post(this.id,event);">
<option id="e28">0 - Selections</option>
<option id="e29">1 - Campaigns</option>
<option id="e45">G - Misc</option></select>


Мне надо выбрать определенный option и т. д.
Для этого написал код:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
Login = Range("A1").Value
MDP = Range("A2").Value
Dim IE As New InternetExplorer
Dim IEDoc As HTMLDocument
Dim InputGoogleZoneTexte As HTMLInputElement
Dim InputGoogleBouton As HTMLInputElement   
   IE.navigate "http://10.21.*******"     
   IE.Visible = True    
   Do While (IE.readyState <> 4): Loop     
   Set IEDoc = IE.document  
      
   Set InputGoogleZoneTexte = IEDoc.all("e3")  'Авторизация
   InputGoogleZoneTexte.Value = Login
   Set InputGoogleZoneTexte = IEDoc.all("e2")
   InputGoogleZoneTexte.Value = MDP   
   
   IEDoc.getElementById("e6").Click   'Нажимаю кнопку
   
   Do While (IE.readyState <> 4): Loop

   Set opt = IEDoc.getElementById("e27").Options("e40")  'тут возникает ошибка
   opt.Selected = "True"
   Set bot = IEDoc.getElementById("e85")
   bot.Click
   IEDoc.getElementById("e91").Click



Проблема в том,что в процессе выполнения кода (авторизация прошла и новая страница открылась) выскакует ошибка:
"Run-time error '91' - Object variable or With Block variable not set "
Выделена строка:
Код: vbnet
1.
Set opt = IEDoc.getElementById("e27").Options("e40")



Самое смешное, что если дальше нажать F5 - все продолжает правильно работать.

Подскажите пожалуйста в чем проблема? Заранее спасибо!
...
Рейтинг: 0 / 0
VBA Internet Explorer ошибка
    #37903410
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makkostya'тут возникает ошибкаТам уже другой IEDoc, старый документ уничтожается при каждом переходе.
...
Рейтинг: 0 / 0
VBA Internet Explorer ошибка
    #37903652
makkostya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariymakkostya'тут возникает ошибкаТам уже другой IEDoc, старый документ уничтожается при каждом переходе.
Нет. Пробовал заново присваивать IEDoc, та же история. Дело не в этом. Проблему уже решил. Вместо:
Код: vbnet
1.
Do While (IE.readyState <> 4): Loop


прописал:
Код: vbnet
1.
Do While IE.Busy: Loop


В чем разница, понимаю не совсем. Но видимо есть, раз заработало.
...
Рейтинг: 0 / 0
VBA Internet Explorer ошибка
    #38173289
alexey_grigorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Та же проблема, только Do While IE.Busy: Loop не помогло! ((

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
Private Sub Form_Load()

Set Sys.Icon = Image2.Picture
Sys.Visible = True
Sys.Enabled = True
Me.WindowState = 0
Me.Hide

Dim objIE As Object

Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Visible = True
    objIE.Navigate ".........."
    
    While objIE.Busy
    DoEvents
    Wend

objIE.document.Forms(0).Elements("pt1:it1").Value = "........."
Wait (1)
objIE.document.Forms(0).Elements("pt1:it2").Value = "............."
Wait (1)
objIE.document.getelementbyID("pt1:cb1").Click
Wait (1)

    While objIE.Busy
    DoEvents
    Wend
objIE.document.getelementbyID("pt1:j_id5").Click
    Wait (1)
    While objIE.Busy
    DoEvents
    Wend
objIE.document.getelementbyID("pt1:r1:0:j_id6::disAcr").Click 'Інформація
    Wait (1)
    While objIE.Busy
    DoEvents
    Wend
    
    Wait (1)
    
objIE.document.getelementbyID("pt1:r1:0:mcl_63").Click 
    Wait (1)
    While objIE.Busy
    DoEvents
    Wend

    TestPos = InStr(1, objIE.document.body.innerText, "No data to display.")
    
    Do
    
    Debug.Print objIE.document.body.innerText
                If TestPos <> 1722 Then
                Set Sys.Icon = Image3.Picture
                Sys.DisabledBalloonIcon = Info
                Sys.BalloonText = "Пришло письмо или почта необработанна!"
                Sys.BalloonTitle = "Сообщение"
                Sys.ShowBalloon
            End If
    objIE.document.getelementbyID("pt1:r1:0:perSends:0:pc1:ctb1::icon").Click 'обновить
    
    While objIE.Busy
    DoEvents
    Wend
    
    Wait (60)
    Loop
    
    
    
End Sub

Public Sub Wait(seconds)
Timer1.Enabled = True 'включение таймера
Timer1.Interval = 1000 * seconds 'установка интервала для таймера
While Timer1.Interval > 0
DoEvents
Wend
Timer1.Enabled = False ' выключение таймера
End Sub

Private Sub Sys_Click(Button As Integer)
Set Sys.Icon = Image2.Picture
End Sub

Private Sub Timer1_Timer()
Timer1.Interval = 0
End Sub



Но что интересно, через F8 все работает (пошагово), а через RUN постоянно ошибки, то на одной ссылке, то на другой.
Что не так??
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VBA Internet Explorer ошибка
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]