Animated GIF in Userform (Word 2002/SP3)

29/11/2008 - 13:29 von Albrecht O. Schweiket | Report spam
Hallo alle,

ich habe eine Anwendung geschrieben, in der ein anderes Programm aus Word
heraus im Hintergrund ausgeführt wird. Das dauert dann eine Weile, bis es in
der Word-Anwendung weiter gehen kann. Nun möchte ich als Pausenfüller den
Benutzer mit einem animated GIF unterhalten.

Wie man ein solches in eine Userform einbindet und diese dann anzeigt, habe
ich gefunden:
http://www.herber.de/forum/archiv/4...410783.htm
und zum Test das GIF:
http://www.gifs.net/image/Animals/C...ances/5094

Ich habe also eine Userform gemàß Anleitung gebaut, und das funktioniert
auch im "Standalone".

'Code der Userform:

Private Sub UserForm_Initialize()
strImgPath = "E:\work\Chicken_dances.gif"
WebBrowser1.Navigate "about:<html><body scroll='no'>" & _
"<img src=" & strImgPath & "></img></bodyY></html>"

End Sub

'Und der Aufruf:

Sub test()
Userform.show
end sub()

Nun will ich aber im aufrufenden Sub weiterarbeiten. Dafür sollte ja mit
vbModeless die Voraussetzung gegeben sein, daß die Userform unabhàngig vom
aufrufenden Sub ist.
Aber: in diesem Fall bleibt das "Animated" einfach stehen - nichts mehr mit
Bewegung!

'Der Aufruf mit Weiterverarbeitung:

Sub test()
Userform.show vbModeless
Sleep 2000 'stellvertretend für irgendeinen anderen Code
end sub()

zur Funktion Sleep s. http://www.vbarchiv.net/api/details.php?id=sleep

Kann mir eine(r) von Euch einen Tipp geben, was ich da korrigieren muß?

TIA Albrecht
 

Lesen sie die antworten

#1 Christian Freßdorf
01/12/2008 - 07:48 | Warnen spam
Hallo Albrecht

Sleep 2000 'stellvertretend für irgendeinen anderen Code



nö, damit wird die gesamte Verarbeitung unterbrochen:
"Diese Funktion hàlt die Programmausführung für eine bestimmte Anzahl von
Millisekunden an."

Für einen bestimmten Code wàre eine Schleife stellvertretend. Und in der
Verarbeitung musst du dann entweder die Controlle an Word zurückgegben
(DoEvents) oder die UserForm aktualisieren.

Also eher:

Sub MyCall()
Dim i As Long
UserForm1.Show vbModeless
For i = 1 To 2000
UserForm1.Label1.Caption = i
Sleep 10 'stellvertretend für irgendeinen anderen Code
DoEvents
Next i
End Sub

Gruß Christian

Ähnliche fragen