12.8k Aufrufe
Gefragt in Tabellenkalkulation von kurtl Mitglied (239 Punkte)
Hallo liebe Experten,
ich möchte gern in einer Exel Tabelle (Tabellenblatt1) ein oder mehrere aninimierte gif`s wackeln lassen.
Ich bin nach Anleitung im Netz wie folgt vorgegeangen:
1.Exel Tabelle geöffnet
2.Ansicht-Symbolleisten-Steuerelemente Toolbox-weitere Steuerelemente-Microsoft Webbrowser- dann Stelle in exel Tabelle markiert, wo das gif zappeln soll (geht ein schwarzes Fenster mit windows symbol auf)
3. VBA Fenster geöffnet, Workbook ausgewählt und folgenden code in diese Arbeitsmappe:

Option Explicit
Private Sub Workbook_Open()
Tabelle1.WebBrowser1.Navigate_ "H:\gif\telefon00015"

End Sub
(Das gif liegt auf meinem Rechner auf Laufwerk H im Ordner gif und
heißt telefon00015)
4.Exelt Tabelle Entwurfsmodus beendet und exel Tabelle geschlossen.
Beim erneuten öffner der Tabelle sollte das Telefon wackeln, aber es kommt nur eine VBA Laufzeitfehlermeldung (438).
Kann jemand weiterhelfen?
Danke im vorraus!
Gruß Kurt

30 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Kurt,

vergleiche doch mal Zeile für Zeile deinen Code unter DieseArbeitsmappe im Workbook_Open Ereignis und meinen - ist bei dir nicht 1 Zeile (bzw. 2 einschließlich zugehörigem Kommentar) zu viel?

Bis später,
Karin
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Liebe Karin,
meinst Du diese zwei Zeilen?

' Webbrowser einblenden. Tabelle1 ist der inter Name lt. Excel, nicht der Name lt. Register
With Tabelle1.WebBrowser1

Du hast doch schon lange verstanden, dass ich den Code im Grunde nicht verstehe und deshalb jetzt auch nicht weiß, warum diese Zeile zu viel sein soll.

Wenn ich diese Zeile ausdem Code lösche kommt auch Fehlermeldung.

Spann mich bitte nicht länger auf die Folter und verrate mir, was ich falsch mache.

Gruß Kurt
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Kurt,

das WebBrowser-Steuerelement ist offensichtlich sehr anfällig, wenn es in verschiedenen Excelversionen verwendet wird.
Öffne deine Arbeitsmappe mit deaktivierten Makros, markiere den WebBrowser -> Rechte Maustaste -> Eigenschaften -> und setzte Visible auf True. Lösche allen Code (auch im Codemodul des Tabellenblattes) und füge nur diesen Code unter DieseArbeitsmappe ein

Private Sub Workbook_Open()
With Tabelle1.WebBrowser1
.Navigate ThisWorkbook.Path & "\telefon.gif"
' Code von Kl@us-Martin für Eigenschaften des Webbrowsers festlegen
With .Document.body
' keine Bildlaufleisten
.setAttribute "scroll", "no"
' Abstand des Gif vom linken Rand
.setAttribute "leftMargin", "0"
' Abstand des Gif vom oberen Rand
.setAttribute "topMargin", "0"
' ergänzt durch Beverly: keinen Rahmen anzeigen
.Style.Border = "none"
End With
DoEvents
.Document.bgcolor = RGB(0, 0, 250)
End With
End Sub


Nach dem Speichern und Schließen sollte beim nächsten Öffnen kein Fehler mehr auftreten.

Bis später,
Karin
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Karin,
ich glaub es wieder nicht funktioniert, ich hab jetzt aber keinen Nerv mehr.

Ich meld mich morgen noch einmal zum letzten Versuch.

Schönen Abend noch
Gruß Kurt
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Kurt,

dann sehe ich nur eine letzte Möglichkeit: ergänze im Code 2 Zeilen (On Error), sodass bei einer Fehlermeldung darüber hinweg gegangen wird:

Private Sub Workbook_Open()
With Tabelle1.WebBrowser1
.Navigate ThisWorkbook.Path & "\telefon.gif"
' Code von Kl@us-Martin für Eigenschaften des Webbrowsers festlegen
With .Document.body
On Error Resume Next
' keine Bildlaufleisten
.setAttribute "scroll", "no"
' Abstand des Gif vom linken Rand
.setAttribute "leftMargin", "0"
' Abstand des Gif vom oberen Rand
.setAttribute "topMargin", "0"
' ergänzt durch Beverly: keinen Rahmen anzeigen
.Style.Border = "none"
On Error GoTo 0
End With
DoEvents
.Document.bgcolor = RGB(0, 0, 250)
End With
End Sub


Vergiss aber bitte nicht, die Eigenschaft Visible des Webbrowsers auf True zu setzen, so wie ich im vorhergehenden Beitrag geschrieben habe.
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Karin,
ich möchte Dir jetzt einen abschließenden Bericht geben.
Dein letzter Code hat zum Teil funktioniert.
Das Microsoft WeB Browser Fenster war rot eingefärbt aber es war rechts eine nicht gewollte Bildlaufleiste an der Seite und Seite links und oben so etwas wie ein dünner Rahmen um das Fenster.
Das ist aber nicht das Hauptproblem. Das zappelnde Telefon war trotzdem in seinem weißen oder farblosen Kästchen gefangen und das hat mich heut früh als mir das Problem schon wieder im Kopf herum spukte auf den entscheidenden Gedanken gebracht.
Das Problem liegt in der Programmierung des Gif selbst.
Mein Ansinnen war ja das wenn ich einen Teil meiner Exel Tabelle grau eingefärbt habe und das Gif dort laufen lasse einfach das Teil -in diesem Falle Telefon-ohne weißen Kasten über dem grau schwebt.
Also hab ich das Gif in ein Photoprogramm geladen und den Hintergrund grau eingefärbt.
Jetzt ist das Kästchen um das Telefon zwar grau aber das Gif zappelt nicht mehr und um eine Einfärbung des Microsoft WeB Browser Fenster käme man warscheinlich trotzdem nicht herum weil man das Fenster nicht 100% so ausrichten kann das kein weißer Streifen mehr zu sehen ist.
Das wären ja jetzt schon zwei Baustellen, ich kapituliere!
Ich möchte Dir, liebe Karin, für Deine Geduld und Einsatz ganz herzlich danken!
Ich hab bestimmt wieder mal eine Frage die vielleicht nicht so komplizeirt ist bei der Du weiterhelfen kannst.
Gruß Kurt
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Kurt,

vielleicht solltest du versuchen, den Hintergrund des Gif auf Transparent zu setzen (keine Ahnung ob das bei Gif geht)?

Ich habe bei mir jetzt folgenden Code und es wird keine Scrollbar angezeigt und uahc kein Fehler ausgelöst:

DieseArbeitsmappe
Private Sub Workbook_Open()
Start
End Sub


Im Tabellenblatt
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
With WebBrowser1.Document.body
.scroll = "no"
.bgcolor = RGB(0, 0, 255)
End With
End Sub


In einem allgemeinen Modul
Sub Start()
Dim webElement As WebBrowser
Set webElement = Tabelle1.WebBrowser1
With webElement
.Navigate ThisWorkbook.Path & "\telefon.gif"
With .Document.body
On Error Resume Next
.Style.margin = "0"
.Style.Border = "none"
On Error GoTo 0
End With
End With
End Sub


Bis später,
Karin
0 Punkte
Beantwortet von kurtl Mitglied (239 Punkte)
Hallo Karin,
du hast recht, bei diesem Code werden keine Laufleisten angezeigt und auch keine Fehlermeldung.
Allerdings ist ein Rahmen um das WeB Browser Fenster.
Aber jetzt kann ich endlich auch mal was beitragen.
Wenn Du diese Codezeile .Style.Border = "none" noch in den Code vom Tabellenblatt mit einfügst ist der Rahmen weg.

So, ich glaub jetzt sind wir am Ende.

Schönen Tag noch und nochmals herzlichen Dank!

Gruß Kurt
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
Hi Kurt,

womit wir im Prinzip wieder beim Ausgangscode wären... ;-)

Bis später,
Karin
...