Clever-Excel-Forum

Normale Version: MP3 oder Wav abspielen unter 64bit
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

git es eine Möglichkeit nach einer bestimmten Bedingung einen Sound abzuspielen?
Beispielsweise in der Art:

Code:
=@WENN(LÄNGE(A2)<>13;AbspielenMP3();"")


Danke
Hola,

verlinkst du bitte deine Fragen in den verschiedenen Foren gegenseitig?
Danke.

Gruß,
steve1da
Hallöchen,

warum =@...?
Hallo human,

einfaches Beispiel spezielles Abspielen einer MP3-Datei.
Code:

Option Explicit

Private Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" ( _
        ByVal lpstrCommand As String, ByVal lpstrReturnString As String, _
        ByVal uReturnLength As Long, ByVal hwndCallback As LongPtr) As Long
Private Declare PtrSafe Function GetShortPathName Lib "kernel32.dll" Alias "GetShortPathNameA" ( _
        ByVal lpszLongPath As String, ByVal lpszShortPath As String, _
        ByVal cchBuffer As Long) As Long
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub PlayMyMP3(sFile As String)
' Spielt ein MP3-File ab
  Dim iOldPos As Long
  Dim sBuffer As String * 255, sPos As String * 256

  If GetShortPathName(sFile, sBuffer, LenB(sBuffer)) <> 0 Then _
  sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
' MCI öffnen
  If Dir$(sFile) <> "" Then
     If mciSendString("open " & Chr$(34) & sFile & Chr$(34) & " type MPEGVideo alias MyMP3", 0, 0, 0) = 0 Then
' MP3 abspielen
        mciSendString "play MyMP3", 0, 0, 0
        Do
           Sleep 200: DoEvents
           mciSendString "status MyMP3 position", sPos, Len(sPos), 0&
           If Val(sPos) = iOldPos Then Exit Do
           iOldPos = Val(sPos)
        Loop
' MP3 schließen
        mciSendString "close MyMP3", 0, 0, 0
     End If
  Else
     MsgBox "Die MP3-Datei '" & sFile & "' wurde nicht gefunden!", vbCritical, "MP3 abspielen"
  End If

End Sub

Sub AbspielenMP3()
  PlayMyMP3 "D:\IRD\Black Night.mp3"
End Sub

_________
viele Grüße
Karl-Heinz
Hallöchen,

Du musst dann das Sub noch umbenennen in
Public Function AbspielenMP3()

Allerdings rechnet die Funktion so lange, wie die MP3 läuft. Nimm also nicht In A Gadda Davida von Iron Butterfly oder Echoes von Pink Floyd Smile
Solltest Du etwas längeres abspielen wollen würde ich eine Titelliste erzeugen und mit der shell an den Mediaplayer übergeben oder etwas in der art. Siehe dazu auch mein Beispiel
Excel-MP3-Lister-Player-Playlist
Hallo zusammen,

hier zur Ergänzung mal noch folgender Tipp:

Man kann mit dem mciSendString auch gezielt Ausschnitte aus längeren Songs abspielen. Anfang und Ende millsekundengenau setzen.

Mit o.g. Code kann leicht ein Stopp erreicht werden (Muss man halt vorher irgendwie abstoppen und sich merken):
If Val(sPos) >= 3000 Then Exit Do 

Gruß Karl-Heinz
Hallo Schauan,

Allerdings rechnet die Funktion so lange, wie die MP3 läuft

Das Ganze könnte auch im Hintergrund auf Windows-Ebene ablaufen. Dann aber ohne die Do-Schleife...
Theoretisch kann man mehrere MP3 (z.B. auch Songs) gleichzeitig ablaufen lassen und/oder sich das Ganze als Hintergrundmusik anhören.

Immer wieder nur den Trommelwirbel des von Dir genannten Songs.  19

Natürlich kann auch die Lautstärke geregelt werden.

VG KH