使用IWebBrowser2将小部件放入PowerPoint中 - 自动化错误:未指定错误

时间:2013-06-07 20:42:30

标签: vba powerpoint powerpoint-vba iwebbrowser2

我创建了一个简单的宏,用于将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之后的任何方法调用都会导致此错误。

enter image description here

0 个答案:

没有答案