powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Управление InternetExplorer
5 сообщений из 5, страница 1 из 1
Управление InternetExplorer
    #36087369
Всем привет! Мне нужно из кода VBA управлять интернет страницей, а именно заполнить два поля и нажать кнопку. Всё прекрасно получается, в основном благодаря статье . Затык вот в чём - действия надо выполнять после загрузки страницы. Сейчас я жду загрузки с помощью sleep(), но это тухло, и я хочу научиться отлавливать событие DocumentComplete, о котором написано в статье. Но не получается. Если кому не лень вкурить статью, помогите, пожалуйста.

Конкретно делаю вот что:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Option Explicit

'-- Класс InternetExplorerWithEvents
Public WithEvents IE As InternetExplorer

Private Sub IE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
'-- Событие DocumentComplete, свидетельствующее,
'-- что страница загружена полностью

Debug.Print "Document Complete, URL = " & URL

'-- Вызов обработчика документа
DocumentComlete URL

End Sub
в модуль класса,
Код: plaintext
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.
Public gobjWithEvents As Object
Public gblnInternetExplorerIsOpen As Boolean
Public gstrURL As String

Public Sub InternetExplorerOpen(blnSilent As Boolean, _
                        blnVisible As Boolean)
'-- Процедура запускает новый Internet Explorer,
'-- создает и иннициализирует глобальный объект
'-- Internet Explorer With Events,
'-- инициализирует глобальную переменную
'-- gblnInternetExplorerIsOpen для контроля
'-- открытого состояния InternetExplorer

Dim objIE As New InternetExplorer

If blnSilent Then
   '-- Проверка режима Offline
   If (objIE.Offline = True) Then
      gblnInternetExplorerIsOpen = False
      Exit Sub
   End If
   '-- Отключение диалогов
   objIE.Silent = True
Else
   '-- Включение диалогов
   objIE.Silent = False
End If

'-- Включение видимости
If blnVisible Then objIE.Visible = True

'-- Создается глобальный объект IE With Events
'-- и связывается с реально открытым экземпляром IE
Set gobjWithEvents = New InternetExplorerWithEvents
Set gobjWithEvents.IE = objIE
Set objIE = Nothing

gblnInternetExplorerIsOpen = True

End Sub

Sub proba()
InternetExplorerOpen True, True
End Sub
-в обычном модуле. Запускаю proba(), вылетает "Compile error: User-defined type not defined" на строке "Set gobjWithEvents = New InternetExplorerWithEvents". Тексты все скопированы из статьи. Заранее всем спасибо!
...
Рейтинг: 0 / 0
Управление InternetExplorer
    #36087951
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В начале статьи написано, что:
В описываемом примере используются две самые распространенные библиотеки, обычно расположенные в папке C:\WINDOWS\SYSTEM, а именно: Microsoft Internet Controls (SHDOCVW.DLL) и Microsoft HTML Object Library (MSHTML.DLL). Для того чтобы описанные ниже процедуры выполнялись, необходимо в проекте VBA отметить применение указанных библиотек. Это достигается с помощью команды «Сервис. Ссылки…», выбираемой в меню редактора VBA.

В VBE из меню Tools > References нужно установить флажки напротив выделенных выше жирным шрифтом библиотек
...
Рейтинг: 0 / 0
Управление InternetExplorer
    #36088133
ZVI, Спасибо за ответ! Библиотеки подключены, забыл об этом написать.
...
Рейтинг: 0 / 0
Управление InternetExplorer
    #36089588
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Волосатое стеклоZVI, Спасибо за ответ! Библиотеки подключены, забыл об этом написать.
Проверьте приложенный файл, запустив процедуру Test() - у меня всё работает.

Если у Вас не работает, то посмотрите, не появились ли битые ссылки в VBE > Tools > References. Если в ссылках есть MISSING, то уточните, какие именно, и заодно - какая версия IE установлена.
...
Рейтинг: 0 / 0
Управление InternetExplorer
    #36093862
ZVI, огромное спасибо, получилось! Ошибка была в том, что я у класса оставил дефолтное имя "Class1", никогда просто с ними не работал. Ещё раз благодарю!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Управление InternetExplorer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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