Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel Userform Sound abspielen

Forumthread: Excel Userform Sound abspielen

Excel Userform Sound abspielen
03.06.2023 15:52:43
Bettina

Hallo Zusammen,
ich hoffe Ihr könnt mir helfen.

Ich möchte einen Sound abspielen und der Sound soll solange wiederholt werden bis ein Userform geschlossen wird.

Der Hintergrund ist, dass ein Makro immer bei einem Fehler aufgerufen wird. Da ich während dessen nicht im Raum bin soll es richtig Krach :) machen und das so lange bis ich es quittiere.

Habt ihr eine Idee?

Viele Dank und Grüße
Bettina

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 16:02:06
volti
Hallo,

hier ein einfaches Beispiel Abspielen einer .WAV für 64 Bit bzw. VBA7...

Option Explicit

Private Declare PtrSafe Function PlaySoundA Lib "winmm.dll" ( _
        ByVal lpszName As String, ByVal hModule As LongPtr, _
        ByVal dwFlags As Long) As Long
Const SND_FILENAME = &H20000

Sub PlayMySound()
  PlaySoundA "D:\IRD\DrumRoll.wav", 0, SND_FILENAME
End Sub
_________
viele Grüße
Karl-Heinz


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 16:23:12
Bettina
Vielen Dank Karl Heinz,

das funktioniert schon gut. Jetzt fehlt nur noch das quittierten.


        UserFormWarnung.Show vbModal
        While True
            DoEvents
            If txt2speak > "" Then Application.Speech.Speak txt2speak
            Call sndPlaySound32(xSound, 0)
            If UserFormWarnung.hide then exit sub
       Wend
funktioniert leider nicht.

Gruß Bettina


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 16:11:24
volti
Wenn Du Dir selbst was zusammenbauen willst....

Private Declare PtrSafe Function Beep Lib "kernel32" ( _
        ByVal dwFreq As Long, ByVal dwDuration As Long) As Long
 
Sub MachLrach() ' Metronom
  Dim L As Long
  L = 150
  Beep 900, L
  Beep 580, L
  Beep 900, L
  Beep 580, L
  Beep 900, L
  Beep 580, L
  Beep 900, L
  Beep 580, L
End Sub
Gruß KH


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 16:52:44
Oberschlumpf
Hi,

oder vllt so?
https://www.herber.de/bbs/user/159452.xlsm

Da ich kein Userform hatte, hab ich das AN auf A1 und das AUS auf B1 gelegt - bevor wirklich aus, läuft es zwar ein wenig nach, aber dann is es aus.
Dein B1 sollte das Terminate-Ereignis deines Userforms sein.

Hilfts?

Ciao
Thorsten


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 17:07:29
Bettina
Vielen Danke Thorsten,
so funktioniert es.
        
       UserFormWarnung.Show 0

        While Range("HlpWarnung").Value = True
            UserFormWarnung.btnEnde.SetFocus
            If txt2speak > "" Then Application.Speech.Speak txt2speak
            Call sndPlaySound32(xSound, 0)
       Wend
Das mit dem Nachlauf ist nicht schön, ich hätte mir eine eleganter Lösung gewünscht.

Grüße
Bettina


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 17:44:51
Bettina
Vielen Dank


AW: Excel Userform Sound abspielen
03.06.2023 17:55:18
Oberschlumpf
Hi,

frag doch mal einen Auftragsprogrammierer nach deinem Wunsch - der findet bestimmt eine Lösung ohne Nachlauf, weil ich nur n Freizeit-Programmierer bin...das dafür aber gratis.

Ciao


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 19:45:32
Nepumuk
Hallo Bettina,

in das Modul deines Userforms:

Option Explicit

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

Private Const SND_ASYNC As Long = &H1
Private Const SND_LOOP As Long = &H8
Private Const SND_FILENAME As Long = &H20000

Private Sub UserForm_Activate()
    Call sndPlaySoundA("C:\Windows\Media\Alarm01.wav", SND_ASYNC Or SND_LOOP Or SND_FILENAME)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Call sndPlaySoundA("NULL", SND_ASYNC)
End Sub
Zur Not kann ich auch die Lautstärke deines Rechners hoch stellen.

Gruß
Nepumuk


Anzeige
AW: Excel Userform Sound abspielen
03.06.2023 21:51:02
Ulf
Hi,
hab OS 64 Bit und Xl 32, stoppt nicht und endet bei Schliessen von Excel


Option Explicit

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

Private Const SND_ASYNC As Long = &H1
Private Const SND_LOOP As Long = &H8
Private Const SND_FILENAME As Long = &H20000
Private Const SND_NODEFAULT = &H2

Private Sub UserForm_Activate()
    Call sndPlaySoundA("C:\Windows\Media\Alarm01.wav", SND_ASYNC Or SND_LOOP Or SND_NODEFAULT)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Call sndPlaySoundA(vbNullString, SND_NODEFAULT)
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel Userform Sound abspielen


Schritt-für-Schritt-Anleitung

Um in einer Excel Userform einen Sound abzuspielen, kannst du die folgenden Schritte befolgen:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul einfügen: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code und füge ihn in das neue Modul ein:

    Option Explicit
    
    Private Declare PtrSafe Function sndPlaySoundA Lib "winmm.dll" ( _
       ByVal lpszSoundName As String, _
       ByVal uFlags As Long) As Long
    
    Private Const SND_ASYNC As Long = &H1
    Private Const SND_LOOP As Long = &H8
    Private Const SND_FILENAME As Long = &H20000
    
    Private Sub UserForm_Activate()
       Call sndPlaySoundA("C:\Windows\Media\Alarm01.wav", SND_ASYNC Or SND_LOOP Or SND_FILENAME)
    End Sub
    
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
       Call sndPlaySoundA(vbNullString, SND_NODEFAULT)
    End Sub
  4. Sounddatei anpassen: Stelle sicher, dass der Pfad zur Sounddatei korrekt ist. Du kannst auch eine andere .WAV-Datei angeben, die du verwenden möchtest.

  5. Userform erstellen: Füge eine Userform hinzu, und verknüpfe die oben stehenden Ereignisse mit deiner Userform.


Häufige Fehler und Lösungen

  • Sound wird nicht abgespielt: Überprüfe, ob der Pfad zur Sounddatei korrekt ist und die Datei existiert.
  • Excel friert ein: Stelle sicher, dass du den Sound in einem asynchronen Modus abspielst (SND_ASYNC), damit Excel weiterhin reagieren kann.
  • Sound bleibt nach Schließen der Userform aktiv: Nutze die UserForm_QueryClose-Methode, um den Sound zu stoppen, wenn die Userform geschlossen wird.

Alternative Methoden

Wenn du eine andere Methode zum Abspielen von Sounds verwenden möchtest, kannst du die Beep-Funktion von VBA ausprobieren:

Private Declare PtrSafe Function Beep Lib "kernel32" ( _
        ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub MachLrach()
    Dim L As Long
    L = 150
    Beep 900, L
    Beep 580, L
    ' Weitere Beep-Kommandos hier
End Sub

Diese Methode erzeugt Töne mit verschiedenen Frequenzen und ist eine gute VBA Beep-Alternative, wenn du keinen Audio-Dateipfad verwenden möchtest.


Praktische Beispiele

Ein Beispiel, um den Sound abzuspielen, wenn ein Fehler auftritt:

Sub FehlerPruefen()
    On Error GoTo FehlerHandler
    ' Dein Code hier

    Exit Sub

FehlerHandler:
    Call sndPlaySoundA("C:\Windows\Media\Alarm01.wav", SND_ASYNC Or SND_LOOP Or SND_FILENAME)
End Sub

In diesem Beispiel wird der Sound abgespielt, wenn ein Fehler auftritt, und bleibt aktiv, bis die Userform geschlossen wird.


Tipps für Profis

  • Lautstärke anpassen: Verwende die Systemsteuerung, um die Lautstärke deines Rechners zu erhöhen, falls der Sound zu leise ist.
  • Benutzerdefinierte Sounds: Experimentiere mit verschiedenen .WAV-Dateien, um die Benutzererfahrung zu verbessern.
  • Optimierung des Codes: Achte darauf, dass der Code effizient bleibt, um die Performance deiner Excel-Anwendung nicht zu beeinträchtigen.

FAQ: Häufige Fragen

1. Kann ich auch andere Audioformate verwenden?
In VBA ist es am besten, .WAV-Dateien zu verwenden, da diese direkt von der sndPlaySoundA-Funktion unterstützt werden.

2. Wie kann ich den Sound nur einmal abspielen?
Verwende die Flaggen SND_ASYNC ohne SND_LOOP, um den Sound einmal abzuspielen:

Call sndPlaySoundA("C:\Windows\Media\Alarm01.wav", SND_ASYNC Or SND_FILENAME)

3. Funktioniert das auch in Excel 32 Bit?
Ja, der Code funktioniert sowohl in 32-Bit- als auch in 64-Bit-Versionen von Excel, jedoch musst du gegebenenfalls den PtrSafe-Teil im Deklarationscode anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige