222 Aufrufe
Gefragt in Tabellenkalkulation von egonkind Einsteiger_in (33 Punkte)
Hallo liebe Experten,

ich möchte gern, dass wenn ich im exel einen selbst erstellten Button mit einem Makro dahinter anklicke, dann ein akustisches Geräusch (ich nenne es mal "Klick Geräusch" zu hören ist. Praktisch ein akustisches Fiedback, dass ich den Button betätigt habe.

Gibt es da einen entsprechenden VBA Code?

Ich habe mir schon folgenden Code organisiert, aber den blockiert mein Anti Virenprogramm.

Sub PlaySound()

Dim wsh As Object Set wsh = VBA.CreateObject("WScript.Shell") wsh.Run "cmd /c start /min mplayer -really-quiet c:\Windows\Media\chimes.wav", 0, True

End Sub

Und wenn ich das Anti Virenprogramm nur mal zum probieren deaktiviere, findet Windows 10 den player nicht.

Scheint also nicht ganz so einfach zu sein.

Deshalb meine Frage an Euch Experten.

Danke für Eure Mühe

Gruß Kurt

6 Antworten

0 Punkte
Beantwortet von
Hallo Kurt

Anderer Vorschlag

Liest den Namen des Commandbutton1 vor

Gruß Nighty

Private Sub CommandButton1_Click()
erzähl_mir_was1 (CommandButton1.Caption)
End Sub

Public Function erzähl_mir_was1(strText)
Dim sabbeln As Object
Set sabbeln = CreateObject("SAPI.SpVoice")
sabbeln.Speak strText
Set sabbeln = Nothing
End Function
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Bearbeitet von m-o

Hallo Egon,

oder wenn du den Sound abspielen willst dann so:

Sub Player()

Dim MediaPlayer1 As Variant
MediaPlayer = Shell("C:\Program Files\Windows Media Player\wmplayer.exe c:\Windows\Media\chimes.wav", vbHide)

End Sub

Oder

Declare Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long

Sub Ton()

Beep 392, 500

End Sub

Den Code musst du genau so in ein allgemeines Modul kopieren. Der erste Wert gibt die Frequenz und der zweite Wert die Dauer des Tons in Millisekunden an. Du kannst natürlich auch mehrere Töne kombinieren:

Declare Function Beep Lib "Kernel32" (ByVal Fq As Long, ByVal Tm As Long) As Long

Sub Warnung()

Beep 392, 200
Beep 494, 100
Beep 588, 200
Beep 740, 100
Beep 880, 400
Beep 740, 100
Beep 880, 900

End Sub

Gruß

M.O.

0 Punkte
Beantwortet von egonkind Einsteiger_in (33 Punkte)
Hallo Nighty, hallo Mo.,

Danke für Eure Mühe!

Ich werde es ausprobieren, und dann berichten.

Gruß Kurt
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Kurt,

vielleicht reicht ja schon, wenn du den ganz normalen Windows-Sound abspielen lässt:

Private Sub CommandButton1_Click()
    Beep
End Sub

Bis später, Karin

0 Punkte
Beantwortet von egonkind Einsteiger_in (33 Punkte)
Hallo zusammen, dieser Code, ist eigentlich, genau der, den ich mir vorgestellt habe.

Sub Player()
Dim MediaPlayer1 As Variant
MediaPlayer = Shell("C:\Program Files\Windows Media Player\wmplayer.exe c:\Windows\Media\chimes.wav", vbHide)
End Sub

Jetzt kommt aber wie könnte es anders sein, das Aber...

Ich möchte ja, wie schon gesagt, das Klickgeräusch, was auch zu hören ist, wenn man im Windows z.B. einen Ordner anklickt.

Diese wave Datei, nennt sich Windows- Navigationsstart, welche das Klick Geräusch erzeugt, ist zwar in dem Ordner, auf den der Makro Code verweist vorhanden, nur leider wird das Geräusch beim Klick auf den Button nicht abgespielt. Keines der Geräusche, die im Windows Media Ordner mit dem Namen Windows beginnen werden abgespielt. Nur die Geräusche wie z.B. Alarm01 -10, Ring01 – 10 und wenige andere noch. Das funktioniert super, nur sind das eben nicht die Geräusche, die ich mir beim Klick auf einen Button vorgestellt habe. Ein Geräusch im Media Ordner umzubenennen lässt der Ordner nicht zu und Geräusche hinein zu kopieren auch nicht.

Auch einen Ordner auf C: Benutzer usw. anzulegen und den Makro Code darauf zu verweisen hat auch nicht funktioniert, da kommt eine Fehlermeldung vom Media player – schade, wäre zu schön gewesen.

Ich Danke Euch trotzdem, für Eure Mühen

Gruß Kurt

0 Punkte
Beantwortet von xlking Experte (1.5k Punkte)

Hi Kurt,

nicht verzagen. Es gibt noch viel mehr Möglichkeiten. Ich nutze z.B. seit Jahren erfolgreich eine API dafür. Hab ich mal auf https://www.exceltip.com/ gefunden.

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


Sub PlaySound()
  
  'von https://www.exceltip.com/general-topics-in-vba/ _
  playing-wav-files-using-vba-in-microsoft-excel.html
  
  sndPlaySound "D:\Pfad\Datei.wav", 1

End Sub

Gruß Mr. K.

...