我创建了一个简单的宏来将 Weather.com 中的 HTML 小部件放入 PowerPoint 幻灯片中。
它不是基于事件的,而是在导航到幻灯片时ActionButtons
调用子例程。ConnectWidget
这很好,但您会注意到,我只能通过首先删除现有的 WebBrowser 形状,然后重新创建它来实现它。
最终,我不得不这样做,因为从wb
之后的任何方法调用.Navigate
,我都会收到自动化错误/未指定错误或方法不可用错误。例如,wb.Refresh
在幻灯片之间来回移动时,如果不先完全删除浏览器形状并重新创建它,我就无法调用。
我可能忽略了一些明显的事情——对可能导致这些错误的原因有什么想法吗?谷歌在解决问题方面没有发现任何真正有用的东西。
Sub ConnectWidget()
Dim sld As Slide
Dim pres As Presentation
Dim shp As Shape
Dim wb As IWebBrowser2
Dim fname As String: fname = "c:" & Environ("homepath") & "\widget2.html"
Set pres = ActivePresentation
Set sld = pres.Slides(2)
On Error Resume Next
sld.Shapes("weatherwidget").Delete
On Error GoTo 0
If Len(Dir(fname)) = 0 Then CreateHTML fname
Set shp = sld.Shapes.AddOLEObject(100, 200, 200, 150, _
"Shell.Explorer.2")
shp.Name = "weatherwidget"
Set wb = sld.Shapes("weatherwidget").OLEFormat.Object
With wb
.Navigate (fname)
End With
' wb.Refresh '## UNCOMMENT THIS LINE AND YOU WILL GET AN ERROR
Set wb = Nothing
On Error Resume Next
Kill fname
On Error GoTo 0
End Sub
Private Sub CreateHTML(fileName$)
'Createsa plaintext HTML file that IWebBrowser2 can navigate
'<script type="text/javascript" src="http://voap.weather.com/weather/oap/90210?template=GENXH&par=3000000007&unit=0&key=twciweatherwidget"></script>
Dim htmlTxt As String
Dim fs As Object
Dim a As Object
htmlTxt = "<script type=" & Chr(34) & "text/javascript" & Chr(34) & "src=" & Chr(34) & _
"http://voap.weather.com/weather/oap/90210?template=GENXH&par=3000000007&unit=0&key=twciweatherwidget" _
& Chr(34) & "></script>"
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(fileName, True)
a.WriteLine htmlTxt
a.Close
End Sub
这是一个这样的错误。请注意,我没有选择Debug
该错误。从单步执行代码中我所能推测的是,在 之后的任何方法调用.Navigate
都会导致此错误。