我想将浏览器窗口嵌入到我的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
此外,每当我尝试对嵌入式资源管理器中的文件夹项进行操作时,它都会显示一些安全警告,因为该路径不在本地计算机上。当我直接用AddOleBrowser()添加Shell.Explorer-OleObject时,不会出现此警告。
有人可以给我一些建议吗?