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

Forumthread: Sounddatei abspielen über VBA

Sounddatei abspielen über VBA
13.01.2005 09:48:36
Michi
Hallo VBA-Profis,
ich möchte eine wav-Datei über einen VBA-Code abspielen. Das funktioniert auch über die API-Funktion wunderbar. Mein Problem ist aber, dass nicht alle wav-Dateien gehen. Ich hab z.B. eine mp3-Datei umgewandelt und die geht dann nicht. Liegt das evtl. an der Dateigröße (hat dann über 40MB) oder gibt es sonst eine andere Möglichkeit, eine mp3-Datei abzuspielen? Und eine zweite Frage wäre, ob es auch möglich ist, ein Video (z.B. ...avi) über VBA zu starten.
Vielen Dank für Eure Unterstützung
Michi
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sounddatei abspielen über VBA
15.01.2005 09:00:58
Nepumuk
Hallo Michi,
MP3-Files kannst du nur über einen Plaver abspielen. Nach dem selben Prinzip kannst du natürlich auch Videofiles ansehen. Hier ein Beispiel für den Mediaplayer:


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As LongByVal lpOperation As StringByVal lpFile As StringByVal lpParameters As StringByVal lpDirectory As StringByVal lpnShowCmd As LongAs Long
Public Sub test()
    ShellExecute 0, "open", "D:\Eigene Dateien\Eigene Präsentationen\Nils.mp3", "", "C:\Programme\Windows Media Player\wmplayer.exe", 1
End Sub


Gruß
Nepumuk
Anzeige
AW: Sounddatei abspielen über VBA
17.01.2005 08:47:44
Michi
Hallo Nepumuk,
vielen Dank für die Antwort. Klappt auch prima, Video sowie Audio. Aber hast Du noch eine Möglichkeit, eine mp3-Datei nur im Hintergrund abzuspielen bzw. den Media Player auszublenden, so dass nicht sichtbar wird, dass der Media Player gestartet wird? Da war die wav-Datei gut, denn hier war's nur im Hintergrund. Weißt Du auch, ob die wav-Dateien von der Datei-Größe beschränkt sind, ich bekomm nämlich eine mit ca. 30 MB?
Und ich hätte noch eine zweite Frage: Ist es möglich, in einer User Form in einem Steuerelement (z.B. Image oder Frame) ein Video zu starten. Das wär schon klasse.
Danke Dir schon mal vorab und Grüße
Michi
Anzeige
AW: Sounddatei abspielen über VBA
18.01.2005 16:22:50
Nepumuk
Hallo Michi,
1. Befindet sich die Datei quartz.dll auf deinem Rechner? Dann geht es ohne Player. Ansonsten geht ausblenden so:


Option Explicit
Private Const SW_MINIMIZE = 6
Private Type POINTAPI
    x As Long
    y As Long
End Type
Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type
Private Type WINDOWPLACEMENT
    Length As Long
    flags As Long
    showCmd As Long
    ptMinPosition As POINTAPI
    ptMaxPosition As POINTAPI
    rcNormalPosition As RECT
End Type
Private Declare Function ClientToScreen Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function GetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function SetWindowPlacement Lib "user32" (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As StringByVal lpWindowName As StringAs Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public Sub play()
    Dim Player As WindowsMediaPlayer
    Set Player = New WindowsMediaPlayer
    Player.openPlayer ("D:\Eigene Dateien\Eigene Präsentationen\nils.mp3")
    Set Player = Nothing
    Sleep 100 'Wartezeit in Millisekunden eventuell erhöhen!!
    unvisible
End Sub
Private Sub unvisible()
    Dim WinEst As WINDOWPLACEMENT
    Dim Punto As POINTAPI
    Dim rtn As Long
    WinEst.Length = Len(WinEst)
    rtn = GetWindowPlacement(FindWindow(vbNullString, "Windows Media Player"), WinEst)
    If rtn <> 0 Then
        Punto.x = 100
        Punto.y = 100
        WinEst.showCmd = SW_MINIMIZE
        WinEst.ptMinPosition = Punto
        WinEst.ptMaxPosition = Punto
        SetWindowPlacement FindWindow(vbNullString, "Windows Media Player"), WinEst
    End If
End Sub


2. Klar geht das. Rechtsklick in die Werkzeugsammlung - Zusätzliche Steuerelemente. In der Liste findest du den Windows Mediaplayer. Wenn du nur einen einzigen Film laufen lassen willst, dann einfach im Eigenschaftsfenster unter ULR den Pfad & Dateinamen eingeben. Wenn du eine Liste von Filmen anbieten willst, dann kann ich dir ein Beispiel für das Playlist-Objekt (erstellen, Dateien zuordnen, abspielen ...) des Mediaplayers geben.
Gruß
Nepumuk
Anzeige
AW: Sounddatei abspielen über VBA
19.01.2005 10:36:38
Michi
Hallo Nepumuk,
danke für Deine Antwort. Die Datei quartz.dll hab ich auf dem Rechner. Was muss ich dann damit tun, dass es ohne Player geht?
Bei dem anderen hab ich hier Probleme:
"Dim Player As WindowsMediaPlayer
Set Player = New WindowsMediaPlayer"
Bei "Dim Player As " schlägt er keinen WindowsMediaPlayer vor.
Aber wenn es auch anders geht, ist das ja eh hinfällig.
Mille Grazie für Dein Feedback und Deine Hilfe.
Michi
Anzeige
AW: Sounddatei abspielen über VBA
19.01.2005 16:16:11
Nepumuk
Hallo Michi,
das hatte ich vergessen zu schreiben. Du benötigst, für das erste Beispiel mit Player, einen Verweis auf: "Windows Media Player".
Beim folgenden Beispiel ohne Control und Player, benötigst du einen Verweis auf: "ActiveMovie control type library". Der Code dazu ist relativ einfach:


Option Explicit
Public objFgM As FilgraphManager
Public bolPause As Boolean
Public Sub PlayMusic()
    Set objFgM = New FilgraphManager
    objFgM.RenderFile "D:\Eigene Dateien\Eigene Präsentationen\nils.mp3"
    objFgM.Run
    bolPause = False
End Sub
Public Sub PauseMusic()
    If bolPause Then objFgM.Run Else objFgM.pause
    bolPause = Not bolPause
End Sub
Public Sub StopMusic()
    objFgM.Stop
    Set objFgM = Nothing
End Sub


Gruß
Nepumuk
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sounddatei über VBA abspielen


Schritt-für-Schritt-Anleitung

Um eine wav-Datei oder mp3-Datei über VBA abzuspielen, kannst du die ShellExecute Funktion verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du das umsetzt:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul ein: Rechtsklick auf "VBAProject (DeineDatei)", dann Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
       (ByVal hwnd As Long, ByVal lpOperation As String, _
       ByVal lpFile As String, ByVal lpParameters As String, _
       ByVal lpDirectory As String, ByVal lpnShowCmd As Long) As Long
    
    Public Sub PlaySound()
       ShellExecute 0, "open", "C:\Pfad\zu\deiner\Datei.mp3", "", "", 1
    End Sub
  4. Ersetze "C:\Pfad\zu\deiner\Datei.mp3" mit dem tatsächlichen Pfad zu deiner mp3-Datei.

  5. Führe das Makro PlaySound aus, um die Datei abzuspielen.


Häufige Fehler und Lösungen

  • Fehler: Datei wird nicht abgespielt: Stelle sicher, dass der Pfad zur Datei korrekt ist und dass die Datei nicht beschädigt ist.

  • Fehler: Media Player öffnet sich sichtbar: Um den Media Player im Hintergrund zu starten, kannst du die quartz.dll verwenden. Hier ist der Code, um den Player zu minimieren:

    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
       (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Private Declare Function SetWindowPlacement Lib "user32" _
       (ByVal hwnd As Long, lpwndpl As WINDOWPLACEMENT) As Long
    
    ' Rest des Codes...
  • WAV-Datei wird nicht abgespielt: Überprüfe die Größe der Datei. Es kann sein, dass zu große Dateien nicht abgespielt werden können.


Alternative Methoden

Falls du mp3-Dateien ohne die Sichtbarkeit des Media Players abspielen möchtest, kannst du den Windows Media Player als ActiveX-Control in deine Excel-Anwendung einfügen:

  1. Gehe zu Entwicklertools > Einfügen > ActiveX-Steuerelemente.
  2. Füge den Windows Media Player hinzu.
  3. Setze den Pfad zur Datei in die Eigenschaften des Players.

Alternativ kannst du auch die ActiveMovie control type library verwenden, um Audio- und Videodateien über VBA abzuspielen.


Praktische Beispiele

Um eine mp3-Datei im Hintergrund abzuspielen, kannst du den folgenden Code verwenden, der den Windows Media Player minimiert:

Public Sub PlayInBackground()
    Dim Player As Object
    Set Player = CreateObject("WMPlayer.OCX")
    Player.URL = "C:\Pfad\zu\deiner\Datei.mp3"
    Player.Controls.play
    ' Weitere Anpassungen, um den Player im Hintergrund zu minimieren
End Sub

Beachte, dass du den Pfad anpassen musst.

Ein weiteres Beispiel ist das Abspielen eines Videos in einer UserForm:

Private Sub UserForm_Initialize()
    Dim Player As Object
    Set Player = CreateObject("WMPlayer.OCX")
    Player.URL = "C:\Pfad\zu\deinem\Video.avi"
    Player.Controls.play
End Sub

Tipps für Profis

  • Überprüfe immer, ob die benötigten DLL-Dateien wie quartz.dll vorhanden sind, um sicherzustellen, dass du Audio ohne sichtbaren Player abspielen kannst.
  • Nutze die ActiveMovie control type library, wenn du mehr Kontrolle über die Medienwiedergabe benötigst.
  • Halte den Code modular und gut kommentiert, damit du ihn später leicht anpassen kannst.

FAQ: Häufige Fragen

1. Kann ich auch WAV-Dateien abspielen?
Ja, du kannst WAV-Dateien mit der ShellExecute-Methode abspielen. Achte darauf, dass die Datei nicht zu groß ist.

2. Wie kann ich eine mp3-Datei im Hintergrund abspielen?
Du kannst den Windows Media Player minimieren oder die quartz.dll nutzen, um die Datei ohne sichtbaren Player abzuspielen.

3. Gibt es eine Möglichkeit, Videos in Excel abzuspielen?
Ja, du kannst Videos über den Windows Media Player oder ein ActiveX-Steuerelement in einer UserForm abspielen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige