MediaPlayer via VBA sequenziell ansteuern
14.12.2013 12:11:17
DietmarU
ü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