Как встроить браузер в форму 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 не загружается, но на данный момент мне действительно все равно.