Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MediaPlayer via VBA sequenziell ansteuern

Forumthread: MediaPlayer via VBA sequenziell ansteuern

MediaPlayer via VBA sequenziell ansteuern
14.12.2013 12:11:17
DietmarU
Hallo VBA-Freunde,
über eine Excel-Tabelle, in der mein kompletter MP3-Bestand (Pfade, Dateinamen, ID3-Tag) enthalten ist, möchte ich über VBA die zuvor von Hand gefilterte und gekennzeichnete Song-Auswahl durchgehend hintereinander -ohne weiteren Eingriff- abspielen. Dies habe ich mir ausgedacht, da keine Medienbibliothek mir ausreichende und komfortable Filtermöglichkeiten bietet (Beispiel: alle Songs von 1980 bis 1989 mit vier oder fünf Sternen bei denen im Titeltext "You" enthalten ist).
Meine bisherigen Recherchen erlauben nur das Abspielen einer einzelnen Auswahl.
Mit meinem beigefügten Code werden alle Songs zum Media-Player geschickt. Da das Ende des laufenden Songs nicht abgewartet wird, startet schon der Nächste. Das geht bis zum letzten Song so, der dann von Anfang bis Ende läuft.
Als möglichen Lösungsansatz stelle ich mir vor
- Eine Steuerung des MediaPlayers zu nutzen, die das Problem regelt.
- Den Returncode "Song ist vom MediaPlayer abgespielt" abzufragen und erst dann den nächsten Song wegzuschicken.
- Eine Playliste zu erzeugen und an den MediaPlayer zu senden.
Zur Umsetzung dieser Lösungen fehlt mir jedoch leider das nötige Wissen.
Wer kann hier der Weihnachtsmann sein?
Grüße
Dietmar
Sub Play_Click()
'*********************************************************************************************** _
'*** In dem Sheet "MP3-Bibliothek" sind in der Spalte "G" die Songs zum abspielen mit "p", "P"  _
oder "Play" gekennzeichnet.        ***
'*** Andere Kennzeichnungen sind individuell Bemerkungen und bleiben unberücksichtigt bzw. fü _
hren nicht zum Abspielen des Songs.  ***
'*********************************************************************************************** _
'***************************************************************************************** _
_
'*** Variablendefinitionen                                                                 _
_
'***************************************************************************************** _
_
'*** MP3_TABELLE:       In diese programminterne Tebelle werden alle zum abspielen  _
gekennzeichneten MP3-Songs gespeichert   ***
'*** ANZAHL:            enthält die Anzahl der zum abspielen gekennzeichneten MP3-Songs    _
_
'*** MAX_ANZAHL:        Anzahl der Zeilen im Sheet "MP3-Bibliothek"                        _
_
'*** VERZEICHNIS:       Hauptverzeichnis, aus der die MP3-Bibliothek mit allen  _
Unterverzeichnissen erstellt wird            ***
'*** UNTERVERZEICHNIS:  verschiedene Unterverzeichnisse zum Hauptverzeichnis und deren  _
Unterverzeichnisse,                  ***
'***                    z.B. verschiedene Interpreten, Alben                               _
_
'*** I:                 Laufvariable
'***************************************************************************************** _
_
Dim MP3_TABELLE(), I, ANZAHL, MAX_ANZAHL, VERZEICHNIS, UNTERVERZEICHNIS
'***** *********************************************************************************** _
_
'*** Festlegen MAX_ANZAHL (Anzahl der Zeilen im Sheet "MP3-Bibliothek")                    _
_
'*** Festlegen VERZEICHNIS (einmalig aus dem Sheet "MP3-Bibliothek") mit bedarfsweiser  _
Ergänzung um "\"                     ***
'***************************************************************************************** _
_
MAX_ANZAHL = Cells(Rows.Count, 3).End(xlUp).Row
VERZEICHNIS = IIf(Right(Cells(2, 2), 1) = "\", Cells(2, 2), Cells(2, 2) & "\")
'***************************************************************************************** _
_
'*** Füllen der MP3_TABELLE mit dem kompletten Laufwerk-,Verzeichnis- und Dateinamen für   _
_
die gekennzeichneten Songs         ***
'***************************************************************************************** _
_
For I = 3 To MAX_ANZAHL
If UCase(Cells(I, 7)) = "P" Or UCase(Cells(I, 7)) = "PLAY" Then
ANZAHL = ANZAHL + 1: UNTERVERZEICHNIS = Mid(Cells(I, 2), InStr(Cells(I, 2), "\ _
_
") + 1)
UNTERVERZEICHNIS = IIf(Right(UNTERVERZEICHNIS, 1) = "\", UNTERVERZEICHNIS,  _
UNTERVERZEICHNIS & "\")
ReDim Preserve MP3_TABELLE(ANZAHL): MP3_TABELLE(ANZAHL) = VERZEICHNIS &  _
UNTERVERZEICHNIS & Cells(I, 3)
End If
Next
'***************************************************************************************** _
_
'*** Aufruf des Windows-Media-Player unter der abzuspielenden Songadresse                  _
_
'***************************************************************************************** _
_
For I = 1 To ANZAHL
Shell "C:\Programme\Windows Media Player\wmplayer.exe """ & MP3_TABELLE(I) & """",   _
_
vbMaximizedFocus
Next
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: MediaPlayer via VBA sequenziell ansteuern
14.12.2013 14:04:29
mumpel
Hallo!
Versuch es mit einer Userform. In dieser kannst Du das Mediaplayer-Control ("Windows Media Player", wmp.dll). Kannst Du in die Werkezugleiste einfügen. Allerdings weiss ich nicht wie Du eine Liste aus Deiner Excel-Tabelle an das Mediaplay-Control schicken kannst. Vielleicht hilft Dir Google dabei.
Gruß, René

Anzeige
MediaPlayer via VBA sequenziell ansteuern
14.12.2013 17:33:42
Anton
Hallo Dietmar,
vielleicht hilft dir das hier.
mfg Anton

AW: MediaPlayer via VBA sequenziell ansteuern
14.12.2013 18:42:11
DietmarU
Hallo Anton,
sieht vielversprechend aus. Komme leider im Moment nicht dazu, Deinen Vorschlag einzubauen und zu testen. Lasse aber baldigst von mir hören.
Vorab Danke
DietmarU

Anzeige
AW: MediaPlayer via VBA sequenziell ansteuern
14.12.2013 21:38:40
DietmarU
Hallo Anton,
Dein Codierungsvorschlag habe ich bei mir eingebaut: funktioniert und ist genau das, was ich mir vorgestellt habe.
Aber: wie immer in der Entwicklung macht das Erreichte Lust auf mehr. Kannst Du mir erklären was/wie die GetObjekt-Defintion für WMP bedeutet/funktioniert bzw. wo ich hierzu Informationen erhalte. Mit geht es insbesondere darum, den WMP (Lautstärke, Skip u.s.w) visible zu stellen und zu nutzen.
Wichtig: Bei Deiner schnellen und zielführenden Antwort hätte ich mir 14 Tage Rumfummeln sparen können.
Danke und Grüße
Dietmar
Sub Play_Click()
'***************************************************************************************** _
'*** In der "MP3-Bibliothek", Sheet  sind in der Spalte "G" die Songs zum abspielen mit " _
p", "P" oder "Play" gekennzeichnet.***
'*** Andere Kennzeichnungen sind individuell und bleiben unberücksichtigt bzw. führen  _
nicht zum Abspielen des Songs.        ***
'***************************************************************************************** _
'***************************************************************************************** _
'*** Variablendefinitionen                                                                 _
'***************************************************************************************** _
'*** MP3_TABELLE:       In diese programminterne Tebelle werden alle zum abspielen  _
gekennzeichneten MP3-Songs gespeichert   ***
'*** ANZAHL:            enthält die Anzahl der zum abspielen gekennzeichneten MP3-Songs    _
'*** MAX_ANZAHL:        Anzahl der Zeilen im Sheet "MP3-Bibliothek"                        _
'*** VERZEICHNIS:       Hauptverzeichnis, aus der die MP3-Bibliothek mit allen  _
Unterverzeichnissen erstellt wird            ***
'*** UNTERVERZEICHNIS:  verschiedene Unterverzeichnisse zum Hauptverzeichnis und deren  _
Unterverzeichnisse,                  ***
'***                    z.B. verschiedene Interpreten, Alben                               _
'*** WMP:               Objektdefinition MediaPlayer (? kommt von Herber, keine Ahnung)  _
'***************************************************************************************** _
Dim MP3_TABELLE(), I, ANZAHL, MAX_ANZAHL, VERZEICHNIS, Unterverzeichnis, WMP As Object
Set WMP = GetObject("new:{6BF52A52-394A-11d3-B153-00C04F79FAA6}")
'***** *********************************************************************************** _
'*** Festlegen MAX_ANZAHL (Anzahl der Zeilen im Sheet "MP3-Bibliothek")                    _
'*** Festlegen VERZEICHNIS (einmalig aus dem Sheet "MP3-Bibliothek") mit bedarfsweiser  _
Ergänzung um "\"                     ***
'***************************************************************************************** _
MAX_ANZAHL = Cells(Rows.Count, 3).End(xlUp).Row
VERZEICHNIS = IIf(Right(Cells(2, 2), 1) = "\", Cells(2, 2), Cells(2, 2) & "\")
'***************************************************************************************** _
'*** Füllen der MP3_TABELLE mit dem kompletten Laufwerk-,Verzeichnis- und Dateinamen für  _
die gekennzeichneten Songs         ***
'***************************************************************************************** _
For I = 3 To MAX_ANZAHL
If UCase(Cells(I, 7)) = "P" Or UCase(Cells(I, 7)) = "PLAY" Then
ANZAHL = ANZAHL + 1: Unterverzeichnis = Mid(Cells(I, 2), InStr(Cells(I, 2), "\ _
") + 1)
Unterverzeichnis = IIf(Right(Unterverzeichnis, 1) = "\", Unterverzeichnis,  _
Unterverzeichnis & "\")
ReDim Preserve MP3_TABELLE(ANZAHL): MP3_TABELLE(ANZAHL) = VERZEICHNIS &  _
Unterverzeichnis & Cells(I, 3)
End If
Next
'***************************************************************************************** _
'*** Aufruf des Windows-Media-Player unter der abzuspielenden Songsadresse                 _
'***************************************************************************************** _
For I = 1 To ANZAHL
WMP.URL = MP3_TABELLE(I)
Do
DoEvents
Loop Until WMP.playState = 1
WMP.Close
Next
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

MediaPlayer via VBA sequenziell ansteuern


Schritt-für-Schritt-Anleitung

Um den Windows Media Player (WMP) über VBA sequenziell anzusteuern, folge diesen Schritten:

  1. Öffne Excel und erstelle ein neues Makro.

  2. Füge folgenden VBA-Code in dein Makro ein:

    Sub Play_Click()
       Dim MP3_TABELLE() As String
       Dim I As Integer
       Dim ANZAHL As Integer
       Dim MAX_ANZAHL As Integer
       Dim VERZEICHNIS As String
       Dim UNTERVERZEICHNIS As String
       Dim WMP As Object
    
       Set WMP = GetObject("new:{6BF52A52-394A-11d3-B153-00C04F79FAA6}")
    
       MAX_ANZAHL = Cells(Rows.Count, 3).End(xlUp).Row
       VERZEICHNIS = IIf(Right(Cells(2, 2), 1) = "\", Cells(2, 2), Cells(2, 2) & "\")
    
       For I = 3 To MAX_ANZAHL
           If UCase(Cells(I, 7)) = "P" Or UCase(Cells(I, 7)) = "PLAY" Then
               ANZAHL = ANZAHL + 1
               UNTERVERZEICHNIS = Mid(Cells(I, 2), InStr(Cells(I, 2), "\") + 1)
               UNTERVERZEICHNIS = IIf(Right(UNTERVERZEICHNIS, 1) = "\", UNTERVERZEICHNIS, UNTERVERZEICHNIS & "\")
               ReDim Preserve MP3_TABELLE(ANZAHL)
               MP3_TABELLE(ANZAHL) = VERZEICHNIS & UNTERVERZEICHNIS & Cells(I, 3)
           End If
       Next
    
       For I = 1 To ANZAHL
           WMP.URL = MP3_TABELLE(I)
           Do
               DoEvents
           Loop Until WMP.playState = 1
           WMP.Close
       Next
    End Sub
  3. Markiere die Songs in deiner Excel-Tabelle, die du abspielen möchtest, indem du "P" oder "Play" in der entsprechenden Spalte einträgst.

  4. Starte das Makro, um die ausgewählten Songs sequenziell abzuspielen.


Häufige Fehler und Lösungen

  • Fehler: Media Player öffnet sich nicht oder spielt nicht ab.

    • Stelle sicher, dass der Pfad zum Media Player korrekt ist und dass die WMP.dll registriert ist.
  • Fehler: Songs werden nicht nacheinander abgespielt.

    • Überprüfe, ob die playState-Abfrage korrekt implementiert ist. Stelle sicher, dass das WMP-Objekt ordnungsgemäß erstellt wird.

Alternative Methoden

Eine alternative Methode zur Steuerung des Windows Media Players ist die Verwendung einer Userform. Du kannst das MediaPlayer-Control (wmp.dll) in deiner Excel-Werkzeugleiste hinzufügen und damit die Songs abspielen. So kannst du eine anpassbare Benutzeroberfläche erstellen.


Praktische Beispiele

Nehmen wir an, du hast eine Excel-Tabelle mit folgendem Inhalt:

Pfad Dateiname ID3-Tag Status
C:\Musik\ Song1.mp3 Artist1 P
C:\Musik\ Song2.mp3 Artist2 P
C:\Musik\ Song3.mp3 Artist3 P

Die oben genannten Schritte ermöglichen es dir, alle Songs, die mit "P" markiert sind, nacheinander abzuspielen.


Tipps für Profis

  • Optimierung der Performance: Nutze die DoEvents-Schleife effizient, um sicherzustellen, dass die Benutzeroberfläche während des Abspielens reaktionsfähig bleibt.
  • Erweiterte Steuerung: Lerne, wie du die Lautstärke und andere Eigenschaften des WMP-Objekts anpassen kannst, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Media Player immer geöffnet wird?
Stelle sicher, dass die Datei- und Pfadangaben korrekt sind und dass der Media Player auf deinem System installiert ist.

2. Was mache ich, wenn ich eine Fehlermeldung beim Ausführen des Makros erhalte?
Überprüfe den Code auf Syntaxfehler und stelle sicher, dass die WMP.dll korrekt registriert ist. Gehe auch sicher, dass alle Pfade zu den MP3-Dateien stimmen.

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