Anzeige
Archiv - Navigation
1756to1760
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eingebettete *.wav-Musikdatei abgespiel

Eingebettete *.wav-Musikdatei abgespiel
12.05.2020 16:39:51
reiner
Hallo Leute,
https:\/\/www.herber.de/bbs/user/137471.xlsm
in der Beispieldatei soll bei Druck auf Schaltfläche 2 ein kurzes Musikstück "Happy Birthday to you" abgespielt werden.
Wenn die Musikdatei in einem separaten Verzeichnis gespeichert ist, dann funktioniert das auch, siehe auskommentierte Zeile.
Die Musikdatei soll nun aus der Exceldatei heraus abgespielt werden (ohne externe Datei), aber da hakt es noch. Hat jemand einen Tipp wie der Programmcode dafür abgeändert werden muss, falls überhaupt möglich?
Bei rechtem Mausklick auf das Dateisymbol in Tabelle 1 erscheint:
Objekt-Manager-Shellobject-Object -- Inhalt aktivieren -- Paketinhalt öffnen -- Öffnen -- Groove-Musik öffnet und spielt das Lied ab.
Allerdings bleibt "Groove-Musik" auch nach Abspielen sichtbar; es sollte aber selbsttätig schließen
mfg
reiner

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

Betreff
Datum
Anwender
Anzeige
AW: Eingebettete *.wav-Musikdatei abgespiel
12.05.2020 17:10:44
reiner
für die gestellte Anfrage habe ich eine (teilweise) Lösungsmöglichkeit gefunden:
  • Worksheets("Tabelle1").Select
    ActiveSheet.Shapes("Object 1").Select
    Selection.Verb Verb:=xlPrimary

  • Die Variante startet "Groove-Music" zum Abspielen der Datei, das ist schon mal gut.
    Allerdings sollte "Groove-Music" minimiert starten un dnach dem Abspielen selbsttätig schließen.
    Weiß jemand wie das möglich ist?
    reiner
    AW: Eingebettete *.wav-Musikdatei abgespiel
    12.05.2020 18:17:38
    volti
    Hallo Reiner,
    ich bin mir sicher, dass ich beim Spiele programmieren in den späten 2000er Jahren eingebettete WAV-Dateien völlig unsichtbar und problemlos mit der u.a. .Verb-Funktionalität abgespielt hatte.
    Später hatte ich mich geärgert, dass das jetzt nur noch mit einer lästigen Mitsicht des Abspielmediums passiert.
    Folgendes Makro spielt eine eingebettete WAV-Datei per Buttonclick, auch auf einem anderen Blatt ab. Leider geht dabei wie gesagt der Player auf.
    Schaltet man ihn in den Minimized-Modus, klappt's mit dem Abspielen micht immer. Für das Schließen muss ich auch eine Zeit vorgeben, da ich das Ende der Musik nicht ermitteln kann.
    Aber vieiileicht bringt Dich diese Anregung ja irgendwie weiter....
    PS: Ich musste es auf 64Bit testen. Hoffe dass dieUmsetzung auf 32Bit geklappt hat.
    Code in die Zwischenablage
    Option Explicit
    Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" ( _
            ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function ShowWindow Lib "user32" ( _
            ByVal hWnd As Long, ByVal nCmdShow As Long) As Long
    Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" ( _
            ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Const WM_CLOSE = &H10
    Sub WavDateiAbspielen()
     Dim oRette As Worksheet
     Dim i As Integer, hWnd As Long
     Application.ScreenUpdating = False
     Application.EnableEvents = False
     Set oRette = ActiveSheet
     Sheets("Tabelle1").OLEObjects("Objekt 1").Verb Verb:=xlPrimary
     Do
      Sleep 10: DoEvents
      hWnd = FindWindow(vbNullString, "Groove-Musik")
      If hWnd <> 0 Then ShowWindow hWnd, 1
      i = i + 1: If i > 300 Then Exit Do        '3 Sekunden warten
     Loop
     PostMessage hWnd, WM_CLOSE, 0&, 0&
     oRette.Select
     Application.EnableEvents = True
     Application.ScreenUpdating = True
    End Sub
    viele Grüße
    Karl-Heinz

    Anzeige
    AW: Eingebettete *.wav-Musikdatei abgespiel
    12.05.2020 18:34:54
    reiner
    hallo Karl-Heinz,
    der Lösungsansatz ist schon mal sehr gut.
    Die Zeit reicht aus, sodass der Player nach dem Ende der Musik zügig schließt.
    Auch wenn es, wie du schreibst, gelegentlich Probleme beim Abspielen gibt, bitte ich dich den Code zu erweitern damit der Player in den Minimized-Modus wechselt, falls nicht zu aufwändig.
    Es muss übrigens nicht zwingend der Groove-Player sein, es kann auch der Media-Player zum Abspielen genutzt werden da er ebenso vorhanden ist.
    mfg
    reiner
    AW: Eingebettete *.wav-Musikdatei abgespiel
    12.05.2020 19:15:21
    volti
    Hallo Reiner,
    ich habe das lange nicht benutzt.
    Das .Verb dürfte via Verknüpfung in Windows den Player selber wählen. Da haben wir beim Aufruf keinen Einfluss drauf.
    Ebenso kann ich das nicht im Minimized-Modus starten, sondern nur nachträglich in den Minimizedmodus setzen und nach vorgegebener Zeit den Player schließen.
    Ob man den Player vorher im Minimized-Modus startet und dann erst das .Verb laufen lässt, müsste man prüfen....
    Ansonsten wird der Fenstertext (hier Groove-Musik) in den laufenden Anwendungen gesucht und wenn gefunden, die Aktionen durchgeführt.
    Alles ziemlich mit heißer Nadel...
    Hier mit dem Parameterwert=2 geht der Player in den Minimized-Modus (bitte ändern, Erweiterung nicht nötig):
    If hWnd 0 Then ShowWindow hWnd, 2
    viele Grüße
    Karl-Heinz
    Anzeige
    AW: Eingebettete *.wav-Musikdatei abgespiel
    12.05.2020 19:30:07
    reiner
    danke Karl-Heinz,
    der Player minimiert sich genauso wie du beschrieben hast; aber restlos begeistert bin ich noch nicht, daher lasse ich den Thread weiterhin offen.
    nochmals herzlichen Dank
    reiner

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige