Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema WebBrowser
BildScreenshot zu WebBrowser WebBrowser-Seite mit Beispielarbeitsmappe aufrufen

HTMLDocument als Variable an WebBrowser1 übergeben

Betrifft: HTMLDocument als Variable an WebBrowser1 übergeben von: Martin S.
Geschrieben am: 14.10.2014 17:20:53

Hallo,

ich beabsichtige HTML-Seiten dynamisch als Object-Variable (HTMLDocument) zu erzeugen und in einem WebBrowser-Control in einem UserForm zu laden. Im Prinzip habe ich das auch hinbekommen (siehe Code), aber kann ich die HTMLDocument-Variable auch direkt an das WebBrowser-Control übergeben? Mir erscheint es etwas umständlich, dass der HTML-Code "abgeschrieben" wird:

Private Sub UserForm_Initialize()
    Dim objHTMLDoc As Object
    'Set objHTMLDoc = New HTMLDocument 'early binding
    Set objHTMLDoc = CreateObject("htmlfile")  'late binding
    
    With objHTMLDoc
        .Open
        .write "Das ist ein sinnloser HTML-Text eines virtuellen HTMLDocuments"
        .Close
    End With
    
    With WebBrowser1
        .Navigate "about:blank"
        .Document.write objHTMLDoc.documentElement.outerHTML
        .Document.Close
    End With
End Sub
Statt der Zeile
WebBrowser1.Document.write objHTMLDoc.documentElement.outerHTML
...müsste es doch etwas geben wie...
WebBrowser1.Document = objHTMLDoc
Ich bin nur neugierig, ob ich mich einfach etwas umständlich anstelle.

Viele Grüße

Martin

  

Betrifft: HTMLDocument als Variable an WebBrowser1 übergeben von: Anton
Geschrieben am: 14.10.2014 17:29:18

Hallo Martin,

meinst du so?:

WebBrowser1.document.body.innerHTML = "dein HTML-Text"

mfg Anton


  

Betrifft: AW: HTMLDocument als Variable an WebBrowser1 übergeben von: Martin S.
Geschrieben am: 14.10.2014 17:36:39

Hallo Anton,

vielen Dank für deine schnelle Antwort. Anscheinend habe ich mein Anliegen zu vereinfacht _ dargestellt. Es geht mir am Ende darum, dass ich eine Object-Variable (HTML-Document) per Function direkt an das WebBrowser-Control übergeben will. Es interessiert mich also, ob es etwas wie

WebBrowser1.Document = objHTMLDoc
gibt (...ohne, dass das WebBrowser-Document neu geschrieben werden muss).

Viele Grüße

Martin


  

Betrifft: Ein HTMLDocument ist Text und kann als ... von: Luc:-?
Geschrieben am: 14.10.2014 17:44:33

…solcher durchaus in einer Variablen angelegt sein, Martin;
das hatte wohl Anton gemeint, während du ein Objekt meinst. Das sollte gehen, wenn sowohl objHTMLDoc als auch WebBrowser1.Document geeignete Objekte gleichen Typs sind. In VBA dann allerdings mit Set-Befehl. Probier's einfach mal aus!
Gruß, Luc :-?


  

Betrifft: ...bitte sieh dir mal folgenden Code an.... von: Martin S.
Geschrieben am: 14.10.2014 18:03:29

Hallo Luc,

auch dir vielen Dank für deine Hilfsbereitschaft. Dass ich den HTML-Code einfach als String-Variable übergeben könnte, ist mir auch klar. Aber wie kann ich das HTML-Dokument als Object-Variable (HTMLDocument) übergeben? Ich habe es mit folgenden Code-Varianten probiert (der 1. Versuch musste schiefgehen, aber ich wollte die von dir angesprochene Set-Anweisung auch mal ausprobieren, oder meintest du etwas anderes?):

Private Sub UserForm_Initialize()
    Dim objHTMLDoc As Object
    Set objHTMLDoc = New HTMLDocument 'early binding
    
    With objHTMLDoc
        .Open
        .write "Das ist ein sinnloser HTML-Text eines virtuellen HTMLDocuments."
        .Close
    End With
    
    With WebBrowser1
        .Navigate "about:blank"
        
        '1. Versuch
        Set .Document = objHTMLDoc
    
        '2.Versuch
        .Document = objHTMLDoc
        
    End With
End Sub
Anders herum würde es ja gehen:
Private Sub UserForm_Initialize()
    Dim objHTMLDoc As Object
    
    With WebBrowser1
        .Navigate "about:blank"
        Set objHTMLDoc = .Document
    End With
    
    
    With objHTMLDoc
        .Open
        .write "Das ist ein sinnloser HTML-Text eines virtuellen HTMLDocuments."
        .Close
    End With
End Sub
Viele Grüße

Martin


  

Betrifft: AW: HTMLDocument als Variable an WebBrowser1 übergeben von: Anton
Geschrieben am: 14.10.2014 18:23:23

Hallo Martin,

du musst IMHO nicht HTML-Document an das WebBrowser-Control übergeben,
es reicht, wenn du dein HTML-Text übergibst, etwa so:

Private Sub UserForm_Initialize()
  With Me.WebBrowser1
    .Navigate "about:blank"
    Do
      DoEvents
    Loop Until .Busy = False
    .Document.body.innerHTML = "dein HTML-Text"
  End With
End Sub
Private Sub CommandButton1_Click()
  Me.WebBrowser1.Document.body.innerHTML = "mein HTML-Text"
End Sub

mfg Anton


  

Betrifft: AW: HTMLDocument als Variable an WebBrowser1 übergeben von: Martin S.
Geschrieben am: 14.10.2014 18:42:04

Hallo Anton,

okay, dann schreibe ich den HTML-Code in Zukunft entweder direkt in eine String-Variable oder übergebe wie bisher den HTML-Code mit Auslesens der HTMLDocument-Objectvariable. Vielen Dank für deine Bemühungen.

Viele Grüße

Martin


 

Beiträge aus den Excel-Beispielen zum Thema "HTMLDocument als Variable an WebBrowser1 übergeben"