Excel WebBrowser Control ausserhalb UserForm
#11
Hallo Stefan,

Zitat:Dateien kann ich nicht hochladen.
Ich kann dein Problem mit Excel 2010 nicht nachvollziehen, also ohne ein bißchen Mitarbeit von dir kann ich nicht weiter helfen.

Übrigens:
Das Webbrowser-Control ist ein eigenständiges ActiveX-Control und hat nichts speziell mit Word zu tun.
Antworten Top
#12
Hallo hier noch ein Nachtrag. Könnte das mit der IE oder sowas zu tun haben? Müsste vielleicht im JavaScript oder dem html-Code etwas angepasst oder modernisiert werden, damit es auch im WebBrowser von Excel läuft. Vielleicht sowas wie Und halten auf den Chrome oder so? Irgendwie scheint es mir so, dass es zwar auch im Excel (blauer Hintergrund) dargestellt werden kann, jedoch der Ticker einfach nicht loslaufen will, was er im Word hingegen kann.
Antworten Top
#13
Da das Webbrowser-Control identisch ist, könnte es an verschiedenen Sicherheitseinstellungen liegen, da dieser Kontext von der Host-Anwendung bereitgestellt wird.
Bleibt dir also nur übrig, Ausgaben auf deiner "Webseite" für Debuggingzwecke zu machen, z.B. in welchem Kompatibilitätsmodus der IE läuft, wie der Inhalt von "tickerSupported" ist usw. Auch könntest du mal die Optionen in Excel für ActiveX-Komponenten überprüfen.
Antworten Top
#14
Hallöchen,

also, in Word läuft Dein js und in Excel nicht. Könnte also, wie knobbi schon schrieb, an den Sicherheitseinstellungen von Excel liegen. Da gibt es ein paar andere Einstellungen und eine Seite mehr als in Word - "Extener Inhalt", wobei es auch "interne" Mechanismen sein können die das verhindern. Auf Grund der höheren Verbreitung von Makros in Excel könnte MS da ja etwas restriktiver vorgehen.

Die Sicherheitsmeldung ist in Excel die gleiche wie in Word. Tut man die akzeptieren, wird das js jedoch nur in Word ausgeführt. Im Anhang hab ich das mal in eine xlsm und docm eingearbeitet, die html und js dazu getan ... Kann man in irgendein Verzeichnis auspacken und ausführen.


.zip   Webticker_lib.zip (Größe: 50,93 KB / Downloads: 2)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Stefan1
Antworten Top
#15
Guten Tag schauan
Vielen Dank für die Ausführungen und das Bereitstellen der Dateien des WebTickers. OK, verstehe jetzt viel besser; es liegt an der Sicherheitseinstellungen, welche zudem noch unterschiedlich bei Excel und Word sind. Excel mag wohl kein JavaSkript aufgrund von Sicherheitsdenken, wie ihr ausgeführt habt. Da bleibt wohl höchstens die Möglichkeit ein WebTicker ohne JS oder via Internetbrowser oder Einstellungen oder Verzicht. Wenigstens kann ich es jetzt nachvollziehen. Nochmals vielen Dank.
Gruss
Stefan1
Antworten Top
#16
Guten Tag schauan

Aufgrund Deines Hinweises habe ich das "marquee"-Laufband gefunden. Mit diesem läuft das Laufband ohne Probleme auf Word und Excel. Nun habe ich aber Probleme mit der Darstellung. So ist die Schriftgrösse einfach zu gross und ich möchte den ganzen Hintergrund blau (#99CCFF) ohne weissen Rand haben. Auch ist der Abstand zum WebBrowser-Rand einfach zu gross er müsste viel kleiner sein. Den bisherigen Code mit JavaScript (welcher im Excel nicht zum Laufen gebracht werden kann) habe ich auskommantiert belassen. Soll ich noch etwas beachten zur Optimierung?.
Vielen Dank für Unterstützung.

Gruss
Stefan1

Code:
Sub HtmlTicker_schreiben()
Dim strTxt As String
Dim strPfad1 As String
Dim strSek As String
Dim strDat As String
Dim objFSO As Object
    strPfad1 = "S:\xxxx"
    strSek = ThisWorkbook.Worksheets("Ticker").Range("B6").Value
    strDat = "WebTicker.html"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    If objFSO.FileExists(strPfad1 & strDat) = True Then Kill strPfad1 & strDat
   
    Set objFSO = Nothing
   
    Open strPfad1 & strDat For Output As #1
'    Print #1, "<html>"
'    Print #1, "<meta http-equiv=" & Chr(34) & "Content-Type" & Chr(34) & " " & _
'              "content=" & Chr(34) & "text/html; charset=UTF-8" & Chr(34) & "/>"
'    Print #1, "<meta http-equiv=" & Chr(34) & "refresh" & Chr(34) & " " & _
'              "content=" & Chr(34) & strSek & ";" & Chr(34) & ">"
'    Print #1, "<body>"
'    If ThisWorkbook.Worksheets("Ticker").Range("B5").Value <> "" Then
'        strTxt = txt2html(CStr(Format$(Now, "dd.mm.yyyy hh:mm") & " - " & ThisWorkbook.Worksheets("Ticker").Range("B5").Value))
'        'strTxt = CStr(Format$(Now, "dd.mm.yyyy hh:mm") & " - " & ThisWorkbook.Worksheets("Ticker").Range("B5").Value)
'        Print #1, "<DIV ID=""TICKER"" STYLE=""margin-top:-0.5em; overflow:hidden; width:100%; onmouseover=""TICKER_PAUSED=true"" onmouseout=""TICKER_PAUSED=false"">"
'        Print #1, strTxt
'        Print #1, "</DIV>"
'        Print #1, "<script type=""text/javascript"" src=""webticker_lib.js"" language=""javascript""></script>"
'    End If
'    'Print #1, "<body bgcolor=#99CCFF>"
'    Print #1, "<body bgcolor=#8DB4E2>"
'    Print #1, "</body>"
'    Print #1, "</html>"
   
     If ThisWorkbook.Worksheets("Ticker").Range("B5").Value <> "" Then _
        strTxt = txt2html(CStr(Format$(Now, "dd.mm.yyyy hh:mm") & " - " & ThisWorkbook.Worksheets("Ticker").Range("B5").Value))
   
    Print #1, "<html>"
    Print #1, "    <head>"
    Print #1, "        <title>Laufschrift mit HTML</title>"
    Print #1, "    </head>"
    Print #1, "    <body>"
    Print #1, "        <center>"
    Print #1, "            <marquee direction=""left"" top=""0"" heigth=""20"" scrollamount=""1"" scrolldelay=""100"" bgcolor=""#99CCFF"">"
    Print #1, "               <font size=""9pt"" color=""white"" face=""Arial"" font-weight=""Bold"">""" & strTxt & "</font>"
    Print #1, "            </marquee>"
    Print #1, "        </center>"
    Print #1, "    </body bgcolor=""#99CCFF"">"
    Print #1, "</html>"  
    Close #1 
End Sub

Public Function txt2html(sText As String) As String

    ' Text-Datei zeilenweise einlesen
    ' und Sonderzeichen, wie Umlaute und spitze
    ' Klammern durch HTML-Steuercodes ersetzen

    sText = Replace(sText, "ä", Chr$(&HC3) & Chr$(&HA4))
    sText = Replace(sText, "ö", Chr$(&HC3) & Chr$(&HB6))
    sText = Replace(sText, "ü", Chr$(&HC3) & Chr$(&HBC))
    sText = Replace(sText, "Ä", Chr$(&HC3) & Chr$(&H84))
    sText = Replace(sText, "Ö", Chr$(&HC3) & Chr$(&H96))
    sText = Replace(sText, "Ü", Chr$(&HC3) & Chr$(&H9C))
    sText = Replace(sText, "ß", Chr$(&HC3) & Chr$(&H9F))

    txt2html = sText

End Function

x
Antworten Top
#17
... schaue Dir hier mal die marquee-Zeile an:

PHP-Code:
<html>
    <
head>
        <
title>Laufschrift mit HTML</title>
    </
head>
    <
body>
        <
center>
<
marquee height="40" width="100%" bgcolor="#99CCFF" behavior="scroll" direction="left" scrollamount="5" style="font-size: 20px;">Jupp !</marquee>
       </
center>
    </
body bgcolor="#99CCFF">
</
html
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Stefan1
Antworten Top
#18
Guten Abend Schauan

Vielen Dank für Deine grosse Unterstützung. Ich habe Deinen HTML-Code noch etwas modifiziert und bin damit recht zufrieden. Leider sollte die Schrift etwas höher am oberen Rand (Fensterrand vom WebBrowser-Steuerelement) sein bzw. "kleben", so wie beim ursprünglichen Html/JS, ansonsten es nicht ganz in das Laufband (Höhe des schmalen WebBrowser-Steuerelementes) passt. Gibt für "Bold" im HTML eine bessere Schreibweise als nachfolgend:
 
Code:
<b>Text</b>
Hier das Resultat als Html und darunter die Erstellung via VBA/Excel (nun kann ich dort auch eine WebBrowser-Vorschau haben 19 ):
Code:
'HTML
'-------------------
<!DOCTYPE html>
<html>
    <head>
        <title>Laufschrift mit HTML</title>
    </head>
    <body>
        <center>
            <marquee hspace="0px" vspace="0px" heigth="40" width="100%" bgcolor="#99CCFF" behavior="none" direction="left" scrollamount="2" scrolldelay="100">
                <font size="3" color="white" face="Arial"><b>06.11.2024 15:52 - ** Willkommen **</b></font>
            </marquee>
        </center>
        <body bgcolor=#99CCFF>
    </body>
</html>
'----------------------------------------------------
'VBA (Auszugsweise)
'------------------
  Print #1, "<!DOCTYPE html>" & vbCrLf & _
              "<html>" & vbCrLf & _
              "    <head>" & vbCrLf & _
              "        <title>Laufschrift mit HTML</title>" & vbCrLf & _
              "    </head>" & vbCrLf & _
              "    <body>" & vbCrLf & _
              "        <center>" & vbCrLf & _
              "            <marquee hspace=""0px"" vspace=""0px"" heigth=""40"" width=""100%"" bgcolor=""#99CCFF"" behavior=""none"" direction=""left"" scrollamount=""2"" scrolldelay=""100"">" & vbCrLf & _
              "                <font size=""3"" color=""white"" face=""Arial""><b>" & strTxt & "</b></font>" & vbCrLf & _
              "            </marquee>" & vbCrLf & _
              "        </center>" & vbCrLf & _
              "        <body bgcolor=#99CCFF>" & vbCrLf & _
              "    </body>" & vbCrLf & _
              "</html>"
   
    Close #1
Antworten Top
#19
Guten Tag
Der Abstand zum oberen Fensterrand des WebBrowser habe ich nun mit topmargin="4px" hingekriegt. Doch das Unterdrücken der Srollbar mit style="overflow:hidden" habe ich nicht hingekriegt. Oder muss mit VBA beim WebBrowser-Steuerelement geregelt werden? Mit .Document.body.Scroll = "no" habe ich es versucht, jedoch ohne Erfolg.

Code:
<!DOCTYPE html>
<html>
    <head>
        <title>Laufschrift mit HTML</title>
    </head>
    <body>
        <center>
            <marquee width="100%" bgcolor="#99CCFF" direction="left" scrollamount="2" scrolldelay="100">
                <font size="3" color="white" face="Arial"><b>06.11.2024 22:09 - ** Guten Tag. XXX **</b></font>
            </marquee>
        </center>
        <body style="overflow:hidden" bgcolor=#99CCFF topmargin="4px">
    </body>
</html>
'----------------------------------$
'VBA

Private Sub WebBrowserInfo_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim sHTML As String
    On Error Resume Next
    With WebBrowserInfo
        '.Document.Body.setAttribute "scroll", "no"
        .Document.body.Scroll = "no"
        '.Document.Body.Style.Border = "none"
    End With
    On Error GoTo 0
End Sub
Antworten Top
#20
Hallöchen,

in Deinem geposteten code sehe ich kein topmargin="4px".

overflow ist eher was für css...
bzw.
.document.getElementById("pDisp").style.overflow = "hidden";
wobei ich mir jetzt nicht sicher bin, was Du da übergibst bzw. ob das mit dem pDisp funktioniert.

Den kompletten Text bei einer Laufschrift sieht man eigentlich nur beim hin und her, also mit behavior=alternate. Oder der Text ist so lang, dass das, was da auf der einen Seite verschwindet, auf er anderen gleich wieder auftaucht. Oder Du schreibst einen kurzen Text mehrfach, sodass immer irgendwo was komplett zu sehen ist.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste