Я хочу встроить окно обозревателя в мою рабочую таблицу Excel, чтобы отобразить содержимое некоторых папок, относящихся к моей книге.
Я использую следующий код, который работает тихо:
Sub AddOleBrowser()
Dim OleBrowser As OleObject
Dim Browser As Object
Set OleBrowser = ActiveSheet.OLEObjects.Add(ClassType:="Shell.Explorer.1", Link:=False, DisplayAsIcon:=False)
Set Browser = OleBrowser.Object
Browser.Navigate "X:\" 'Actually some network-path related to my workbook-path
OleBrowser.Activate
End Sub
Моя проблема в том, что OleBrowser продолжает заменяться изображением в низком разрешении, отображая вместо этого содержимое папки всякий раз, когда я щелкаю где-нибудь на своем листе.Когда я дважды щелкаю по нему, он возвращается к обычному виду браузера, пока снова не потеряет фокус.Я хочу добавить несколько окон браузера на свой рабочий лист, чтобы они все оставались «активированными».
Я также попытался добавить фрейм, который затем содержит объект просмотра:
Sub AddOleFrameWithBrowser()
Dim OleFrame As OleObject
Dim CtrlBrowser As Control
Dim Browser As Object
Set OleFrame = ActiveSheet.OLEObjects.Add("Forms.Frame.1", Link:=False, DisplayAsIcon:=False)
Set CtrlBrowser = OleFrame.Object.Controls.Add("Shell.Explorer.2", "Browser") 'Frame1 is an MSForms.Frame-object that I placed there before.
CtrlBrowser.Left = 0
CtrlBrowser.Top = 0
CtrlBrowser.Width = OleFrame.InsideWidth
CtrlBrowser.Height = OleFrame.InsideHeight
Set Browser = CtrlBrowser.Object
Browser.Navigate "X:\" 'Actually some network-path related to my workbook-path
OleFrame.Activate
End Sub
Второй вариант работает нормально, но когда я переключаюсь на другой лист и возвращаюсь, мой фрейм пуст и я не могу получить действительную ссылку на свой элемент управления «Браузер».
Sub CheckFrame()
'
Dim CheckBrowser As Object
Set CheckBrowser = ActiveSheet.OleObjects(1).Object.Controls("Browser").Object
Stop
'CheckBrowser now actually contains the correct WebBrowser-object,
'but when I run this sub (after I return to my Worksheet
'with the Frame-OleObject) all it's properties either
'contain falsified data or may not be accessed by the debugger...
'Everything is fine, when I run this sub right after
'my AddOleFrameWithBrowser()-Sub.
ActiveSheet.OleObjects(1).Activate '<- Does not help
End Sub
Дополнительно всякий раз, когда я пытаюсьсделайте что-нибудь с папками-элементами внутри моего встроенного проводника, он отображает некоторое предупреждение безопасности, потому что путь не на моей локальной машине.Это предупреждение не появляется, когда я добавляю Shell.Explorer-OleObject напрямую с помощью AddOleBrowser ().
Может кто-нибудь дать мне какой-нибудь совет?