MP3 über VBA abspielen in Excel unter 64-Bit
Schritt-für-Schritt-Anleitung
Um eine MP3-Datei über Excel VBA abzuspielen, befolge diese Schritte:
-
Öffne das VBA-Editor:
- Drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
-
Füge ein neues Modul hinzu:
- Rechtsklicke im Projekt-Explorer, wähle
Einfügen
und dann Modul
.
-
Kopiere den folgenden Code in das Modul:
Option Explicit
' API-Deklarationen für 64-Bit
#If VBA7 Then
Private Declare PtrSafe Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpszCommand As String, _
ByVal lpszReturnString As String, _
ByVal cchReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Private Declare PtrSafe Function GetShortPathName Lib "kernel32" _
Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) As Long
#Else
Private Declare Function mciSendString Lib "winmm.dll" _
Alias "mciSendStringA" (ByVal lpszCommand As String, _
ByVal lpszReturnString As String, _
ByVal cchReturnLength As Long, _
ByVal hwndCallback As Long) As Long
Private Declare Function GetShortPathName Lib "kernel32" _
Alias "GetShortPathNameA" (ByVal lpszLongPath As String, _
ByVal lpszShortPath As String, _
ByVal cchBuffer As Long) As Long
#End If
' MP3-Datei abspielen
Public Function MP3_Play(ByVal sFile As String, ByVal sAlias As String) As Boolean
Dim bResult As Boolean
Dim sBuffer As String
Dim lResult As Long
sBuffer = Space$(255)
lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
If lResult <> 0 Then
sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
' MCI öffnen
lResult = mciSendString("open " & sFile & " type MPEGVideo alias " & sAlias, 0, 0, 0)
If lResult = 0 Then
' MP3 abspielen
If mciSendString("play " & sAlias & " from 0", 0, 0, 0) = 0 Then
bResult = True
End If
End If
End If
MP3_Play = bResult
End Function
' Wiedergabe stoppen und MCI schließen
Public Sub MP3_Stop(ByVal sAlias As String)
mciSendString "stop " & sAlias, 0, 0, 0
mciSendString "close " & sAlias, 0, 0, 0
End Sub
Sub losgehts()
MP3_Stop "MyAlias"
MP3_Play ActivePresentation.Path & "\losgehts.mp3", "MyAlias"
End Sub
-
Ändere den Pfad zur MP3-Datei entsprechend deinem Dateispeicherort.
-
Führe die Subroutine losgehts
aus, um die MP3 abzuspielen.
Häufige Fehler und Lösungen
-
Kein Sound bei Verwendung der Funktion:
- Überprüfe, ob der Dateipfad Leerzeichen enthält. Dies kann dazu führen, dass der Sound nicht abgespielt wird. Verwende stattdessen einen kurzen Pfad ohne Leerzeichen.
-
VBA läuft ohne Fehler, aber kein Ton:
- Stelle sicher, dass du die richtige API-Deklaration für 64-Bit verwendest (siehe Code oben).
-
Fehlermeldung bei der Ausführung:
- Prüfe, ob die MP3-Datei im korrekten Format vorliegt und nicht beschädigt ist.
Alternative Methoden
Falls du Probleme mit mciSendString
hast, kannst du auch die Windows Media Player
-Objekte in VBA verwenden:
Dim wmp As Object
Set wmp = CreateObject("WMPlayer.OCX")
wmp.URL = "C:\Dein\Pfad\losgehts.mp3"
wmp.controls.play
Diese Methode kann einfacher sein, erfordert jedoch, dass der Windows Media Player auf deinem System installiert ist.
Praktische Beispiele
Hier sind einige nützliche Code-Snippets:
- MP3 abspielen mit Benutzerinteraktion:
Sub PlayMP3()
Dim mp3Path As String
mp3Path = Application.GetOpenFilename("MP3 Files (*.mp3), *.mp3")
If mp3Path <> "False" Then
MP3_Play mp3Path, "MyAlias"
End If
End Sub
- MP3 abspielen und nach einer bestimmten Zeit stoppen:
Sub PlayAndStop()
MP3_Play "C:\Dein\Pfad\losgehts.mp3", "MyAlias"
Application.Wait Now + TimeValue("00:00:10") ' 10 Sekunden warten
MP3_Stop "MyAlias"
End Sub
Tipps für Profis
- Verwende
Option Explicit
, um Variablen zu deklarieren und Fehler zu vermeiden.
- Teste deinen Code regelmäßig in einer Testumgebung, insbesondere bei Änderungen am Dateipfad oder am Dateiformat.
- Optimiere Dateinamen: Vermeide Leerzeichen und benutze einfache, klare Namen, um Komplikationen zu vermeiden.
FAQ: Häufige Fragen
1. Warum funktioniert mein Code auf 32-Bit, aber nicht auf 64-Bit?
Es kann sein, dass die API-Deklarationen für 64-Bit angepasst werden müssen. Stelle sicher, dass du PtrSafe
verwendest.
2. Wo finde ich weitere Informationen zu VBA und MP3 abspielen?
Du kannst in einer Suchmaschine nach "VBA MP3 abspielen" suchen oder spezifische Foren besuchen, die sich mit Excel VBA beschäftigen.