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中打开该文件?
答
找到了一种方法来检查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
google一下'PropertyExists日常使用TLBINF32.DLL' ...它似乎已被弃用,但您的系统可能仍然有它(毫秒窗口)....检查监视窗口中的activesheet.shapes对象(在工作表上有IE的ActiveX)....可能有东西,你可以检查.....对于外部网页浏览器使用'shell'命令 – jsotola
第二部分https://*.com/questions/3166265/open-an-html-page-in-default-browser-with-vba# 3166322 – jsotola