Как встроить браузер в форму Excel VBA?
0 stenci [2018-07-24 17:30:00]
Раньше я использовал элемент управления Microsoft WebBrowser во многих форматах VB6 и Excel VBA. Мне нужно сделать это снова, но я не могу понять, как это сделать.
Я попытался открыть старый проект VB6, и я получил сообщение об ошибке:
Line 17: Class SHDocVwCtl.WebBrowser of control WebBrowser was not a loaded control class.
Я попытался добавить ссылку на Microsoft Web Browser на новый проект VBA, но его не существует.
Я попытался добавить ссылку на msi.dll как было предложено здесь, но не помогло.
Я попытался использовать ленту разработчика - Вставить - Дополнительные элементы управления - Microsoft Web Browser, он существует, но он говорит " Cannot insert object.
Я попытался использовать объект Shell.Explorer.2 как описано здесь, но я получаю сообщение об ошибке:
Sheet1.OLEObjects.Add ClassType:="Shell.Explorer.2", Left:=147, Top:=60.75, Width:=400, Height:=400
Run-time error '1004':
Cannot insert object.
Единственный способ, с которым работал, - открыть окно IE, но мне нужно, чтобы браузер был встроен в форму, потому что мне нужно добавить несколько пользовательских кнопок:
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
vba excel webbrowser-control
1 ответ
1 stenci [2018-07-24 18:36:00]
Я не смог заставить старый старый элемент управления веб-браузером появляться в панели инструментов управления VBA, как это было раньше, но я смог динамически вставить его в форму из кода. Поэтому я не могу перетащить маленький глобус в форму, но это не проблема.
Некоторые комментарии касались изменения значения в реестре. Это необходимо для вставки встроенного браузера в рабочий лист, но не влияет на форму.
Достаточно добавить ссылку на Microsoft Internet Controls (ieframe.dll), а затем использовать следующий код в форме:
Option Explicit
Private WithEvents WB As WebBrowser
Private Sub UserForm_Activate()
Set WB = Me.Controls.Add("Shell.Explorer.2")
WB.Navigate "http://google.com"
End Sub
Private Sub WB_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Debug.Print "WB_NavigateComplete2"
End Sub
РЕДАКТИРОВАТЬ
@VictorK в комментарии напомнил мне, что мне нужно щелкнуть правой кнопкой мыши на панели инструментов, чтобы добавить элемент управления. Я помнил о том, что элемент управления добавлен после добавления ссылки, но я не помню (не думаю), чтобы щелкнуть правой кнопкой мыши и добавить элемент управления.
Итак... все, что мне нужно было сделать, это добавить ссылку на ieframe.dll вместо Microsoft Web Browser, только потому, что Microsoft Web Browser не отображается в списке. Все остальное работает нормально.
Я до сих пор не знаю, почему старое приложение VB6 не загружается, но на данный момент мне действительно все равно.