2017-08-02 5 views
0

Ich verwende SHDocVw.InternetExplorer, um in PowerPoint eine lokale HTML-Datei für den Benutzer anzuzeigen. Die Datei enthält ein Formular mit einer Schaltfläche zum Senden, und ich möchte meine VBA-Funktion ausführen, wenn auf die Schaltfläche geklickt wird. Ich habe folgendes gemacht, um das onQuit-Event des InternetExplorers zu behandeln.Handle HTMLElement Ereignisse in VBA

Class-Modul "CIE"

Public WithEvents ie As SHDocVw.InternetExplorer 

Private Sub ie_onQuit() 
    Debug.Print "onQuit was fired" 
End Sub 

Modulcode

Option Explicit 

Public curCIE As CIE 

Sub open_ie() 
    Dim CIEobj As CIE 
    Set CIEobj = New CIE 

    Dim ie As SHDocVw.InternetExplorer 
    Set ie = New SHDocVw.InternetExplorer 

    ie.Visible = True 
    ie.Navigate "C:\search.html" 

    Do While ie.Busy Or ie.readyState <> 4 
     DoEvents 
    Loop 

    Set CIEobj.ie = ie 
    Set curCIE = CIEobj 
End Sub 

Ich möchte eigentlich das Ereignis OnClick

curCIE.ie.Document.getElementsByTagName("button").Item(0) 

aber ich weiß nicht, zu handhaben, wie Sie vorgehen.

+0

einige Deklarieren 'App' Variable innerhalb des IE' window' Objekts über '.execScript' Methode, weisen Sie ihr den Verweis auf das Excel' Application' Objekt zu, dann rufen Sie das Excel Makro mit 'App.Run" MacroName "innerhalb des IE Buttons onclick Event Handler Code auf. [Dieses Beispiel] (https://stackoverflow.com/a/38134477/2165759) kann helfen. – omegastripes

Antwort

2

Sie Verweis auf MSHTML hinzufügen könnte, dann ist Ihr Klassenmodul auf diese Weise machen:

Public WithEvents ie As SHDocVw.InternetExplorer 

Private WithEvents button As MSHTML.HTMLButtonElement 

Public Sub LoadButton() 
    Set button = ie.document.getElementsByTagName("button").Item(0) 
End Sub 

Private Function button_onclick() As Boolean 
    'do what you want here 
End Function 

Private Sub ie_onQuit() 
    Debug.Print "onQuit was fired" 
End Sub 

Und dann, in dem anderen Modul, fügen Sie diese Anweisung nach CIEobj.ie-Eigenschaft:

CIEobj.LoadButton 
Verwandte Themen