Excel-VBA:将Folder-Explorer添加到工作表

时间:2019-02-20 15:27:51

标签: excel vba frame

我想将浏览器窗口嵌入到我的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时,不会出现此警告。

有人可以给我一些建议吗?

0 个答案:

没有答案