Discussion:
VBA - Sound bei bestimmten Ereignissen ?
(zu alt für eine Antwort)
Michael Klein
2004-05-12 14:18:04 UTC
Permalink
Hi,

ist es mit Hilfe von VBA in Excel möglich es so einzurichten, dass bei
bestimmten Ereignissen in einer Arbeitsmappe ein Sound ausgegeben wird ?
Wenn möglich auch verschiedene Sounds/Töne bei verschiedenen Ereignissen ?

Für jeden Tipp dankbar.
Freundliche Grüße
Stephan Kassanke
2004-05-12 14:28:04 UTC
Permalink
Post by Michael Klein
Hi,
ist es mit Hilfe von VBA in Excel möglich es so einzurichten, dass bei
bestimmten Ereignissen in einer Arbeitsmappe ein Sound ausgegeben wird ?
Wenn möglich auch verschiedene Sounds/Töne bei verschiedenen Ereignissen ?
Für jeden Tipp dankbar.
Freundliche Grüße
Hallo Michael,

Du kannst Ereignisse in VBA abfangen für die Mappe (in der VBA Umgebung
Doppelklick auf DieseArbeitsmappe) und dann eine prozedur wie

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
' wave file abspielen
End Sub

d.h. bei der Neukalkulation eines Blattes wird diese Routine aufgerufen. Das
geht auch für einzelne Blätter.

Der Artikel http://support.microsoft.com/default.aspx?scid=kb;EN-US;306682
zeigt, wie man in VBA WAV Files abspielen kann. Das kannst Du ja jetzt
kombinieren.

viele Grüße,

Stephan

PS.: Iich würde es nicht übertreiben, die ewigen Sound können schnell *sehr*
nervig werden ;-)
Michael Klein
2004-05-12 15:55:20 UTC
Permalink
Hi,

das " ' wave file abspielen " ist die entscheidende Hürde, die ich nehmen
muss.

Das Arbeitsmappen und einzelne Blätter auf Ereignisse reagieren können, ist
mir bekannt.
Ich weiß halt nur nicht, wie ich einen Sound mit Hilfe des VBA-Editors so
einbinde, dass er bei dem jeweiligen Ereignis aufgerufen bzw. abgespielt
wird.
Das ist das Problem.

Ich werde mir die Seite, auf die sich dein Link bezieht, mal durchlesen
(leider alles Englisch ;-( (( ) , aber wäre froh, wenn ihr mir hier in der
NG den entscheidenden Tipp geben könntet.

Vielen Dank im Voraus
Freundliche Grüße
Post by Stephan Kassanke
Post by Michael Klein
Hi,
ist es mit Hilfe von VBA in Excel möglich es so einzurichten, dass bei
bestimmten Ereignissen in einer Arbeitsmappe ein Sound ausgegeben wird ?
Wenn möglich auch verschiedene Sounds/Töne bei verschiedenen Ereignissen ?
Für jeden Tipp dankbar.
Freundliche Grüße
Hallo Michael,
Du kannst Ereignisse in VBA abfangen für die Mappe (in der VBA Umgebung
Doppelklick auf DieseArbeitsmappe) und dann eine prozedur wie
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
' wave file abspielen
End Sub
d.h. bei der Neukalkulation eines Blattes wird diese Routine aufgerufen. Das
geht auch für einzelne Blätter.
Der Artikel http://support.microsoft.com/default.aspx?scid=kb;EN-US;306682
zeigt, wie man in VBA WAV Files abspielen kann. Das kannst Du ja jetzt
kombinieren.
viele Grüße,
Stephan
PS.: Iich würde es nicht übertreiben, die ewigen Sound können schnell *sehr*
nervig werden ;-)
Thomas Ramel
2004-05-12 16:00:44 UTC
Permalink
Grüezi Michael

Michael Klein schrieb am 12.05.2004
Post by Michael Klein
das " ' wave file abspielen " ist die entscheidende Hürde, die ich nehmen
muss.
Ich werde mir die Seite, auf die sich dein Link bezieht, mal durchlesen
(leider alles Englisch ;-( (( ) , aber wäre froh, wenn ihr mir hier in der
NG den entscheidenden Tipp geben könntet.
Frank Ahrendt-Theilen schrieb hier in der NG mal folgendes:

Declare Function waveOutGetNumDevs Lib "WINMM" () As Integer
Declare Function sndPlaySound Lib "WINMM" Alias "sndPlaySoundA" _
(ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Function PlayWave()
If waveOutGetNumDevs() <> 0 Then
WaveName$ = "c:\windows\media\Der Microsoft-Sound.wav"
dummy = sndPlaySound(WaveName$, 1)
End If
End Function

Gefunden habe ich es bei Tange Google mit dem Stichwort 'Wave' und der
Angabe von '*.de.excel' für die Newsgroup.

http://groups.google.com/advanced_group_search
--
Mit freundlichen Grüssen

Thomas Ramel
- MVP für Microsoft-Excel -

[Win 2000Pro SP-4 / xl2000 SP-3]
Stephan Kassanke
2004-05-12 16:21:26 UTC
Permalink
Post by Michael Klein
Hi,
das " ' wave file abspielen " ist die entscheidende Hürde, die ich nehmen
muss.
Das Arbeitsmappen und einzelne Blätter auf Ereignisse reagieren können, ist
mir bekannt.
Ich weiß halt nur nicht, wie ich einen Sound mit Hilfe des VBA-Editors so
einbinde, dass er bei dem jeweiligen Ereignis aufgerufen bzw. abgespielt
wird.
Das ist das Problem.
Ich werde mir die Seite, auf die sich dein Link bezieht, mal durchlesen
(leider alles Englisch ;-( (( ) , aber wäre froh, wenn ihr mir hier in der
NG den entscheidenden Tipp geben könntet.
Vielen Dank im Voraus
Freundliche Grüße
Hallo Michael,

falschen URL geposted, sorry.

http://www.exceltip.com/show_tip/General_Topics_in_VBA/Playing_WAV-files_using_VBA_in_Microsoft_Excel/460.html

Hier das ganze im Kontext:

Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Change"
Call PlayWavFile("c:\example.wav", False)
End Sub


Sub PlayWavFile(WavFileName As String, Wait As Boolean)
If Dir(WavFileName) = "" Then Exit Sub ' no file to play
If Wait Then ' play sound before running any more code
sndPlaySound WavFileName, 0
Else ' play sound while code is running
sndPlaySound WavFileName, 1
End If
End Sub

Spielt den Sound "c:\example.wav" bei Blattaktivierung ab.

Hoffe, das hilft Dir weiter,

viele Grüße,

Stephan
Michael Klein
2004-05-13 08:08:48 UTC
Permalink
Hi,

danke dir Stephan.
Ich werde den Code gleich mal ausprobieren. Ich habe nur noch eine Frage zum
Anfang:

"Private Declare Function sndPlaySound Lib "winmm.dll" _
Post by Stephan Kassanke
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long"
Sind das vordefinierte Funktionen in VBA ?
Ich verstehe diesen Anfang nicht so richtig. Wäre nett, wenn du mir ihn noch
erläutern könntest.

Vielen Dank im Voraus
Freundliche Grüße
Post by Stephan Kassanke
Post by Michael Klein
Hi,
das " ' wave file abspielen " ist die entscheidende Hürde, die ich nehmen
muss.
Das Arbeitsmappen und einzelne Blätter auf Ereignisse reagieren können,
ist
Post by Michael Klein
mir bekannt.
Ich weiß halt nur nicht, wie ich einen Sound mit Hilfe des VBA-Editors so
einbinde, dass er bei dem jeweiligen Ereignis aufgerufen bzw. abgespielt
wird.
Das ist das Problem.
Ich werde mir die Seite, auf die sich dein Link bezieht, mal durchlesen
(leider alles Englisch ;-( (( ) , aber wäre froh, wenn ihr mir hier in
der
Post by Michael Klein
NG den entscheidenden Tipp geben könntet.
Vielen Dank im Voraus
Freundliche Grüße
Hallo Michael,
falschen URL geposted, sorry.
http://www.exceltip.com/show_tip/General_Topics_in_VBA/Playing_WAV-files_using_VBA_in_Microsoft_Excel/460.html
Post by Stephan Kassanke
Private Declare Function sndPlaySound Lib "winmm.dll" _
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox "Change"
Call PlayWavFile("c:\example.wav", False)
End Sub
Sub PlayWavFile(WavFileName As String, Wait As Boolean)
If Dir(WavFileName) = "" Then Exit Sub ' no file to play
If Wait Then ' play sound before running any more code
sndPlaySound WavFileName, 0
Else ' play sound while code is running
sndPlaySound WavFileName, 1
End If
End Sub
Spielt den Sound "c:\example.wav" bei Blattaktivierung ab.
Hoffe, das hilft Dir weiter,
viele Grüße,
Stephan
Stephan Kassanke
2004-05-13 11:41:08 UTC
Permalink
Post by Michael Klein
Hi,
danke dir Stephan.
Ich werde den Code gleich mal ausprobieren. Ich habe nur noch eine Frage zum
"Private Declare Function sndPlaySound Lib "winmm.dll" _
Post by Stephan Kassanke
Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _
ByVal uFlags As Long) As Long"
Sind das vordefinierte Funktionen in VBA ?
Ich verstehe diesen Anfang nicht so richtig. Wäre nett, wenn du mir ihn noch
erläutern könntest.
Vielen Dank im Voraus
Freundliche Grüße
Hallo Michael,

damit wird eine API Funktion des Windows Systems deklariert. Das sind
Funktionen, die auch von Windows benutzt werden und durch DLLs bereit
gestellt werden. Um diese auch in VBA nutzen zu können, müssen sie erst
deklariert, also bekannt gemacht werden. Das geschieht durch die oben
stehende Zeile.

viele Grüße,

Stephan

Loading...