paddy
2004-11-13 13:10:29 UTC
Hallo Excel-Profis!
Ich suche nach einer Möglichkeit, per VBA eine Sounddatei abzuspielen.
Soweit lässt sich dies recht einfach mit einer API-Funktion
realisieren. Ich möchte jedoch, dass folgender VBA-Code während dem
Ausgeben der WAV-Datei fliessend ausgeführt wird. Gemäss dem
Excel-Newsletter von SmartToolsPublishing vom 08.06.2004 sollte diese
mit folgender Funktion machbar sein:
////////////////////////////
Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" _
(ByVal lpszName As String, _
ByVal hModule As Long, _
ByVal dwFlags As Long) As Long
Const SND_ASYNC As Long = &H1
Const SND_FILENAME As Long = &H20000
Const SND_PURGE As Long = &H40
Const SND_LOOP As Long = &H8
////////////////////////////
Die Prozedur, die die Funktion aufruft, sieht folgendermassen aus:
////////////////////////////
Sub SchleifeMitMusik ()
Dim i As Single, j As Double
Call PlaySound("C:\Sounds\Warten.wav", _
0, SND_FILENAME Or SND_ASYNC)
'hier lang andauernder Schleifendurchlauf
For i = 1 To 10000
j = i / 10000
Range("A1").Value = j 'Während die Sounddatei quasi im
Hintergrund
Next i 'abgespielt wird, soll in Zelle A1 das
Ergebnis
End Sub 'der Berechnung angezeigt werden...
////////////////////////////
Gemäss Newsletter soll die Konstante "SND_ASYNC" dafür verantwortlich
sein, dass die Datei im Hintergrund abgespielt wird, und folgender
VBA-Code sofort ausgeführt wird. Die Konstante "SND_FILENAME" muss
immer angegeben werden, wenn eine WAV-Datei ausgegeben werden soll.
Die beiden Konstanten werden durch ein logisches "Or" miteindander
verknüpft.
Soweit so gut! Bloss: Es funktioniert nicht!!! Während der Wiedergabe
der Sounddatei, ist die Ausführung des VBA-Codes blockiert. Der
restliche Code wird erst ausgeführt, nachdem das Musikstück
vollständig ausgegeben worden ist!!
Kennt hier jemand eine alternative Variante, mein Problem zu lösen?
Oder sieht jemand weshalb, dieses Funktionsgerüst nicht das tut, was
es eigentlich soll?? Habe ich etwas vergessen???
Vielen Dank für Eure Anregungen und Tipps!
Gruss
paddy
Ich suche nach einer Möglichkeit, per VBA eine Sounddatei abzuspielen.
Soweit lässt sich dies recht einfach mit einer API-Funktion
realisieren. Ich möchte jedoch, dass folgender VBA-Code während dem
Ausgeben der WAV-Datei fliessend ausgeführt wird. Gemäss dem
Excel-Newsletter von SmartToolsPublishing vom 08.06.2004 sollte diese
mit folgender Funktion machbar sein:
////////////////////////////
Declare Function PlaySound Lib "winmm.dll" _
Alias "PlaySoundA" _
(ByVal lpszName As String, _
ByVal hModule As Long, _
ByVal dwFlags As Long) As Long
Const SND_ASYNC As Long = &H1
Const SND_FILENAME As Long = &H20000
Const SND_PURGE As Long = &H40
Const SND_LOOP As Long = &H8
////////////////////////////
Die Prozedur, die die Funktion aufruft, sieht folgendermassen aus:
////////////////////////////
Sub SchleifeMitMusik ()
Dim i As Single, j As Double
Call PlaySound("C:\Sounds\Warten.wav", _
0, SND_FILENAME Or SND_ASYNC)
'hier lang andauernder Schleifendurchlauf
For i = 1 To 10000
j = i / 10000
Range("A1").Value = j 'Während die Sounddatei quasi im
Hintergrund
Next i 'abgespielt wird, soll in Zelle A1 das
Ergebnis
End Sub 'der Berechnung angezeigt werden...
////////////////////////////
Gemäss Newsletter soll die Konstante "SND_ASYNC" dafür verantwortlich
sein, dass die Datei im Hintergrund abgespielt wird, und folgender
VBA-Code sofort ausgeführt wird. Die Konstante "SND_FILENAME" muss
immer angegeben werden, wenn eine WAV-Datei ausgegeben werden soll.
Die beiden Konstanten werden durch ein logisches "Or" miteindander
verknüpft.
Soweit so gut! Bloss: Es funktioniert nicht!!! Während der Wiedergabe
der Sounddatei, ist die Ausführung des VBA-Codes blockiert. Der
restliche Code wird erst ausgeführt, nachdem das Musikstück
vollständig ausgegeben worden ist!!
Kennt hier jemand eine alternative Variante, mein Problem zu lösen?
Oder sieht jemand weshalb, dieses Funktionsgerüst nicht das tut, was
es eigentlich soll?? Habe ich etwas vergessen???
Vielen Dank für Eure Anregungen und Tipps!
Gruss
paddy