94451
Goto Top

Eigener HTML-Code im UserForm

Hallo,

im Internetz habe ich dieses Script gefunden:

Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" ( _  
    ByVal dwMilliseconds As Long)

Private blnLoad As Boolean
Public emailHT As String

Private Sub UserForm_Activate()
    WebBrowser1.Navigate2 "about:blank"  
    Do While blnLoad
        DoEvents
        Sleep 10
    Loop

    WebBrowser1.Document.Body.innerHTML = emailHT
End Sub

Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, _
        URL As Variant, Flags As Variant, TargetFrameName As Variant, _
        PostData As Variant, Headers As Variant, Cancel As Boolean)
    blnLoad = True
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
    blnLoad = False
End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    With WebBrowser1.Document.Body
        .Scroll = "no"  
        .Style.Border = "none"  
    End With
End Sub


Sub web()
    
    emailHT = "<H1>neuer Inhalt</H1>"  
    
    showEmail.Show modal


End Sub

die Public Variable (emailHT) habe ich hinzugefügt...

meine Idee war es den HTML-Code "vorher" zu definieren um dann Später den jeweiligen Inhalt sehen zu können!

leider verwendet er meine "Public Variable" nicht sondern Zeigt keinen Inhalt an... wenn ich den Inhalt an der Stelle hinschreibe (was mir zu Statisch ist) funktioniert alles wie es soll...

kann mir jemand helfen wie ich vorher oder unmittelbar nachher den Inhalt anpassen kann?

*zur info: Ich arbeite im Outlook 2013 auf einen x86 System ... es soll auch nirgendwo anders laufen müssen*

Nachtrag:
noch schöner wäre es über so eine funktion
    showEmail.Show modal
    
    With showEmail
        .WebBrowser1.Document.Body.innerHTML = "ee"  
        .Repaint
    End With
bekomme hier aber den Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt

Vielen Dank

Gruß
RoadRunner

Content-Key: 301793

Url: https://administrator.de/contentid/301793

Ausgedruckt am: 19.03.2024 um 06:03 Uhr

Mitglied: 116301
Lösung 116301 14.04.2016 um 09:48:10 Uhr
Goto Top
Hallo RoadRunner!

Mit Inhalt starten so...

UserForm1:
Option Explicit

Private Const READYSTATE_COMPLETE = 4

Public Sub LoadBrowser(ByVal strHtml As String)
    With WebBrowser1
        .Navigate2 "about:blank"  
         Do: DoEvents: Loop Until .ReadyState = READYSTATE_COMPLETE
        .Document.body.innerHtml = strHtml
    End With
    Show
End Sub
Modul:
Private Sub Test()
    UserForm1.LoadBrowser "<H1>neuer Inhalt</H1>"  
End Sub

Gruß Dieter
Mitglied: 94451
94451 14.04.2016 um 09:59:04 Uhr
Goto Top
Hallo,

funktioniert sehr toll face-smile danke

Ich will damit u.a. Emails öffnen...
gibt es denn die Möglichkeit, dass wenn 2 Emails kommen, dass dann 2 Fenster offen sind?

und das ganze in "MODAL" also nicht aufdringlich im Vordergrund...

=> vielen vielen Dank face-smile
Mitglied: 116301
Lösung 116301 14.04.2016 um 10:19:34 Uhr
Goto Top
Hallo RoadRunner!

In UserForm Codezeile 11:
    Show vbModeless
Mit dem Parameter <vbModeless> kannst Du gleichzeitig weitere UserForms anzeigen, allerdings liegen diese dann übereinander. Bei 2 Fenstern könntest Du die UserForm-Eigenschaft <StartUpPosition> beim Einen auf Fenstermitte und beim Anderen auf Bildschirmmitte setzen. Versuchs mal...

Gruß Dieter
Mitglied: 94451
94451 14.04.2016 um 10:30:56 Uhr
Goto Top
Hi,

vielen dank, auch das Funktioniert...

mein Problem ist, dass mein "Script" ja immer das "selbe" Form aufruft nur eben mit anderen Inhalt...
=> d.h. es wird kein 2. aufgerufen sondern das 1. überschrieben...

gibt es denn die Möglichkeit z.B. via ID mehrere UserForm1 aufrufen?

Danke
Mitglied: 116301
116301 14.04.2016 aktualisiert um 10:52:11 Uhr
Goto Top
Hallo RoadRunner!

mein Problem ist, dass mein "Script" ja immer das "selbe" Form aufruft nur eben mit anderen Inhalt...=> d.h. es wird kein 2. aufgerufen sondern das 1. überschrieben...
Eine 2. UserForm erstellen, indem Du der aktuellen am Ende die Ziffer 2 anhängst und dann exportierst, anschließend die Ziffer 2 in Ziffer 1 umwandelst und die UserForm mit der Ziffer 2 wieder importierst. Danach kannst Du nach Belieben eine oder beide UserFormen gleichzeitig öffnen...

Alternativ könnte man mehrere Web-Browser-Elemente übereinander legen und diese per ID nach belieben auf Visible=True/False setzen...

Gruß Dieter