VBA检查网页浏览器的ActiveX控件

VBA检查网页浏览器的ActiveX控件

问题描述:

我有一个带有宏的工作簿来生成一个HTML文件,并将其显示在嵌入其中一个工作表的Web浏览器中。在Excel 2016测试此宏后,我碰到这里所描述的ActiveX控件的问题就来了:How to make Microsoft Web Browser object work in Excel 2016VBA检查网页浏览器的ActiveX控件

而这里的一段脚本在Web浏览器加载页面:

Sub LoadHTML() 
    Set IE = Sheets("Report").WebBrowser1 
    IE.Navigate2 (myFile) 
End Sub 

但此脚本返回如果activeX控件不起作用,则会出现错误。 我找到了一个工作,围绕这个:

Sub LoadHTML() 
On Error GoTo OpenInIE 
    Set IE = Sheets("Report").WebBrowser1 
    IE.Navigate2 (myFile) 
Exit Sub 
OpenInIE: 
    With New InternetExplorer 
     .Visible = True 
     .Navigate myFile 
    End With 
End Sub 

有没有一种方法来检查,如果ActiveX控件不产生错误的工作?

而且,顺便说一句,如果activeX控件不固定,并且需要在外部浏览器中打开HTML文件,是否可以在默认系统浏览器而不是IE中打开该文件?

+0

google一下'PropertyExists日常使用TLBINF32.DLL' ...它似乎已被弃用,但您的系统可能仍然有它(毫秒窗口)....检查监视窗口中的activesheet.shapes对象(在工作表上有IE的ActiveX)....可能有东西,你可以检查.....对于外部网页浏览器使用'shell'命令 – jsotola

+0

第二部分https://*.com/questions/3166265/open-an-html-page-in-default-browser-with-vba# 3166322 – jsotola

找到了一种方法来检查IE ActiveX控件存在

Sub checkIE() 
    Dim aaa As Shape 
    For Each aaa In Sheets("Report").Shapes 

     Debug.Print aaa.OLEFormat.progID 

     If aaa.OLEFormat.progID = "Shell.Explorer.2" Then MsgBox "we have IE" 

    Next aaa 
End Sub 

谢谢,但不幸的是,你的脚本返回一个错误。 试图在这个方向挖:

Sub LoadHTML() 
Dim IEavailable As Boolean, Find As String, Found As String 
Find = "Shell.Explorer.2" 
IEavailable = False 
    For Each o In Worksheets("Report").OLEObjects 
     Found = o.progID 
     If Found = Find Then 
      Set IE = Sheets("Report").WebBrowser1 
      IE.Navigate2 (myFile) 
      IEavailable = True 
     End If 
    Next 
    If IEavailable = False Then 
     With New InternetExplorer 
      .Visible = True 
      .Navigate myFile 
     End With 
    End If 
End Sub 

但这返回一个错误,以及:对象的方法“进程id“_OLEObject'failed