Registriert seit: 26.09.2015
Version(en): 2013
Guten Tag miteinander Ich habe direkt in eine Userform ein WebBrowser-Control eingebaut und der funktioniert. Doch sobald ich dieses Formular mit Userform.show (vbModeless) Start ist der WebBrowser ausserhalb der Userform in linken oberen Ecke vom Windows-Fenster. Wie kriege ich das wieder zurück in die UserForm bzw. warum kann so etwas geschehen. Wenn ich die Userform händisch starte, ist der Webbrowser wie gewünscht in der Userform. Weiss hier jemand Rat? Vielen Dank für Eure Unterstützung.
Registriert seit: 04.04.2017
Version(en): Excel365
Versuche das:
Registriert seit: 26.09.2015
Version(en): 2013
Guten Tag Ja, die Eigenschaft einstellen geht. Aber es sind mehrere Nutzer und deshalb kann ich das nicht generell für diese Arbeitsmappe einrichten. Gibt es keine andere Möglichkeit?
Dynamisch habe ich es versucht mit :
Private WithEvents WebBrowserInfo As WebBrowser
Private Sub UserForm_Initialize() Dim objMSweb AS Object Set objMSweb = Me.Controls.Add("Shell.Explorer.2", "x", True) With objMSWeb .Top = 6 .Left = 6 .Height = 15 .Width = 507 .Name = "WebBrowserInfo" .Visible = True .Object.Navigate CON_MTHL .Object.Document.Body.Scroll = "no" .Object.Document.Body.Style.Border = "Bone" End With Set objMSweb = Nothing End Sub
Private Sub WebBrowserInfo_WindowClosing(ByVal IsChildWindow As Boolean, Cancel As Boolean) Cancel = True End Sub
WebBrowserInfo geht gar nicht mehr mit dem dynamisch erstellten WebBrowser? Step-by-step-VBA Ausführung zeigt keine Probleme mit der Darstellung und Navigation. Sobald ich die Navigation zufügen ist es beim Aufruf UserForm_Initialize vorbei, dann kommt eine Fehlermeldung. Eigenartig. Ist das WebBrowser-Steuerelement vorbei?
Registriert seit: 26.09.2015
Version(en): 2013
22.10.2024, 10:43
(Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2024, 10:43 von Stefan1.)
Ach, es geht, aber ich bringe diese verflixten Scroll-Balken nicht raus? Ich bekomme einen Fehler bei .Document.Body.Scroll = "no" und .. Style.Border = "Bone"???
Registriert seit: 26.09.2015
Version(en): 2013
03.11.2024, 14:33
(Dieser Beitrag wurde zuletzt bearbeitet: 03.11.2024, 14:33 von Stefan1.
Bearbeitungsgrund: Verbesserung der Programmierung, weil im Excel Laufband-Text nicht sichtbar ist.
)
Guten Tag miteinander Nachdem das direkte Einbinden des WebBrowser-Steuerelementes in einer UserForm kläglich gescheitert ist, weil der WebBrowser trotz .Top und .Left-Vorgaben immer am oberen linken Windows-Fenster klebte, habe ich erfolgreich die dynamische Vba-Einbindung eingerichtet. Gleichzeitig konnte ich noch die leider notwendige Zoom-Einstellungen der Breite (.Width) des WebBrowsers einrichten, weil auch hier der WebBrowser einfach nicht mitmacht und stur seine ursprüngliche Breite beibehält, wenn der Windows-Zoom verändert wird. Die Einstellungen werden sowieso erst beim Neustart wirksam, was jedoch verkraftbar ist. Nun habe ich den Code im Excel- und Word-VBA eingebaut. Im Word funktioniert nun das Laufband einwandfrei, doch im Excel ist mit dem identischen VBA nur der blaue Hintergrund sichtbar, jedoch nicht den Text (Laufband, Besp. "Guten Tag. xxx" im WebTicker.html, den ich hier nicht dargestellt auch per VBA dynamisch anpassen kann). Hilfe, was ist da bloss los? Was muss ich hier einstellen, das es auch im Excel funktioniert. Das ist doch nicht möglich? Was fehlt hier vielleicht, was Excel noch braucht? Ich kenne mich in der Html/Style/CSS nicht so aus. Vielen Dank für Eure Unterstützung. Gruss Stefan1 Code: '----------------------------------------------------------------------- Private WithEvents WebBrowserInfo As WebBrowser Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hWnd As LongPtr) As LongPtr Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hdc As LongPtr, ByVal nIndex As Long) As Long Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hWnd As LongPtr, ByVal hdc As LongPtr) As Long Private Const LOGPIXELSX As Long = 88 Private Sub WebBrowserInfo_NavigateComplete2(ByVal pDisp As Object, URL As Variant) With WebBrowserInfo '.Document.body.Scroll = "no" '.Document.body.Style.Border = "none" End With End Sub Private Sub UserForm_Initialize() Dim hdcScreen As LongPtr Dim hWnd As LongPtr Dim lDPI As Long Dim lZoom As Long 'WebBrowser Set WebBrowserInfo = Me.Controls.Add("Shell.Explorer.2", "x", True) With WebBrowserInfo .Top = 6 .Left = 19 .Height = 35 .Width = 665 'Windows Display Zoom hWnd = GetActiveWindow(): hdcScreen = GetDC(hWnd): lDPI = -1 If (hdcScreen) Then lDPI = GetDeviceCaps(hdcScreen, LOGPIXELSX): ReleaseDC hWnd, hdcScreen If lDPI > 0 Then lZoom = Round(lDPI * 665 / 96) If lDPI = 96 Then .Width = 665 '100 % Else .Width = lZoom End If '96 – Smaller 100% = Width: 665 '120 – Medium 125% '144 – Larger 150% '192 – Extra Large 200% '240 – Custom 250% '288 – Custom 300% '384 – Custom 400% '480 – Custom 500% '.Width = Round(Me.Width * 124.3 / 100, 0) .Navigate CON_HTML_01 End With End Sub 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" '.Document.body.setAttribute "TopMargin", "5" 'If URL = "about:blank" Then 'margin-top:-0.5em; 'sHTML = "<!DOCTYPE html><html>'"<p style=""background-color:powderblue; margin-top:-0.5em;"">" & Now() & ", " & getUser() & "</p></html>" '.Document.body.innerhtml = sHTML 'End If End With On Error GoTo 0 End Sub Private Sub WebBrowserInfo_WindowClosing(ByVal IsChildWindow As Boolean, Cancel As Boolean) 'Hier wird verhindert, dass das Control von der Form gelöscht wird! Cancel = True End Sub '-------------------------------------------------------------------- 'WebTicker.html <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta http-equiv="refresh" content="40;"> <body> <DIV ID="TICKER" STYLE="margin-top:-0.5em; overflow:hidden; width:100%; onmouseover="TICKER_PAUSED=true" onmouseout="TICKER_PAUSED=false">01.11.2024 14:50 - ** Guten Tag. xxx. "" </DIV> <script type="text/javascript" src="webticker_lib.js" language="javascript"></script> <body bgcolor=#8DB4E2> </body> </html> '-------------------------------------------------------------------- 'Webticker_lib.js // WebTicker by Mioplanet // www.mioplanet.com TICKER_CONTENT = document.getElementById("TICKER").innerHTML; TICKER_RIGHTTOLEFT = false; TICKER_SPEED = 1; TICKER_STYLE = "font-family: Arial; font-size:14px; font-weight: bold; color:white"; TICKER_PAUSED = false; ticker_start(); function ticker_start() { var tickerSupported = false; TICKER_WIDTH = document.getElementById("TICKER").style.width; var img = "<img src=ticker_space.gif width="+TICKER_WIDTH+" height=0>"; // Firefox if (navigator.userAgent.indexOf("Firefox")!=-1 || navigator.userAgent.indexOf("Safari")!=-1) { document.getElementById("TICKER").innerHTML = "<TABLE cellspacing='0' cellpadding='0' width='100%'><TR><TD nowrap='nowrap'>"+img+"<SPAN style='"+TICKER_STYLE+"' ID='TICKER_BODY' width='100%'> </SPAN>"+img+"</TD></TR></TABLE>"; tickerSupported = true; } // IE if (navigator.userAgent.indexOf("MSIE")!=-1 && navigator.userAgent.indexOf("Opera")==-1) { document.getElementById("TICKER").innerHTML = "<DIV nowrap='nowrap' style='width:100%;'>"+img+"<SPAN style='"+TICKER_STYLE+"' ID='TICKER_BODY' width='100%'></SPAN>"+img+"</DIV>"; tickerSupported = true; } if(!tickerSupported) document.getElementById("TICKER").outerHTML = ""; else { document.getElementById("TICKER").scrollLeft = TICKER_RIGHTTOLEFT ? document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth : 0; document.getElementById("TICKER_BODY").innerHTML = TICKER_CONTENT; document.getElementById("TICKER").style.display="block"; TICKER_tick(); } } function TICKER_tick() { if(!TICKER_PAUSED) document.getElementById("TICKER").scrollLeft += TICKER_SPEED * (TICKER_RIGHTTOLEFT ? -1 : 1); if(TICKER_RIGHTTOLEFT && document.getElementById("TICKER").scrollLeft <= 0) document.getElementById("TICKER").scrollLeft = document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth; if(!TICKER_RIGHTTOLEFT && document.getElementById("TICKER").scrollLeft >= document.getElementById("TICKER").scrollWidth - document.getElementById("TICKER").offsetWidth) document.getElementById("TICKER").scrollLeft = 0; window.setTimeout("TICKER_tick()", 30); }
Registriert seit: 22.09.2024
Version(en): 2010
Hallo Stefan,
mal eine ganz andere Frage: Warum muß das in Excel mit einer Userform umgesetzt werden? Ich sehe da keine Verbindung, eine einfache HTML Seite würde hier doch ausreichen.
Registriert seit: 26.09.2015
Version(en): 2013
03.11.2024, 16:46
(Dieser Beitrag wurde zuletzt bearbeitet: 03.11.2024, 16:46 von Stefan1.)
Guten Tag knobbi38 Ja, auch das habe ich überlegt, doch für eine einzeilige Laufband-Durchsage schon etwas überfunktional und nach Beenden von Excel soll es auch wieder verschwinden. Ich dachte zudem, dass ein Spezialist vielleicht erkennt, welche Einstellung im WebBrowser oder der Html/Style fehlt, dass es Excel einfach nicht kann, was in Word ohne Probleme funktioniert. Wieso diese Unterschiede für die gleiche Sache und VBA-Programmierung? Ich gehe davon aus, dass das WebBrowser-Steuerelement dynamisch erstellt in Word und Excel identisch sind. Es kann also nicht sein, dass ich mich mit den Eigenschaften des WebBrowser-Steuerelementes etwa vertan hätte. Ich habe allen notwendigen Code hier eingestellt, dass vielleicht ein Spezialist nachbauen könnte um den Fehler/Mangel zu erkennen? Gruss Stefan1
Registriert seit: 26.09.2015
Version(en): 2013
Guten Tag miteinander Oje, bleibt wahrscheinlich auch wieder unbeantwortet.
Registriert seit: 22.09.2024
Version(en): 2010
Hallo Stefan,
warum sollte ein "Spezialist" sich die Mühe machen, deine Problemstellung nachzubauen? Durch das Hochladen eines Beispiels, das das Problem verdeutlicht, kann zumindest die Hilfsbereitschaft erhöht werden.
Registriert seit: 26.09.2015
Version(en): 2013
Hallo knobbi38
Gut, ich habe den Code für alle Elemente hier am 03.11.2024 13:33 hochgeladen und schon deshalb, weil ich auch der Meinung bin, dass gefundene Lösungen auch zurückgemeldet werden sollten. Wie gesagt, läuft es unter Word einwandfrei und in Excel auch, ausser dass das Laufband nicht läuft. Mit dem geprosteten Code lässt sich das einigermaßen leicht nachbauen und kann auch denen helfen, die so ein dynamisches und zoom-angepasstes WebBrowser-Element möchten.
Das Problem von dem "starten" WebBrowser in Excel kann ich mir nicht erklären. Das muss doch auf die gleiche Bibliothek wie Word zugreifen? Es ist sowas wie ein fehlendes Aktualisieren oder so. Refresh nützt jedoch nicht (habe ich auch versucht). Wahrscheinlich braucht der WebBrowser in Excel irgendeine Einstellung oder Aktivierung mehr als es im Word notwendig zu sein scheint. Dateien kann ich nicht hochladen.
Gruss und Danke für jede Unterstützung Stefan1
|