Microsoft Excel

Herbers Excel/VBA-Archiv

Mediaplayer starten über Makro geht nicht in Excel

Betrifft: Mediaplayer starten über Makro geht nicht in Excel von: Elmar
Geschrieben am: 12.10.2014 23:00:54

Hallo Experten,
bräuchte mal dringend Hilfe...
Kann mir jemand sagen, weshalb der Code unter Excel 2007 nicht läuft? er bleibt immer an der fett markierten Zeile hängen. Vielleicht habt Ihr ja einen besseren Vorschlag, das Makro soll einfach nur die Datei "-1-.mp3" starten, die im vorgegebenen Verzeichnis liegt.
DANKE Euch schon mal
Elmar

Sub player_starten1()
  Dim fso As Object, f As Object, WshShell As Object
  Dim strText As String, strVBS As String, strMP3 As String
  strVBS = "c:\temp.vbs"
  strMP3 = "C:\Magical Opulence\-1-.mp3" 'anpassen
  Set fso = CreateObject("Scripting.FileSystemObject")
  strText = "Set MediaPlayer = CreateObject(" & Chr(34) & "WMPlayer.OCX.7" & Chr(34) & ")" &  _
vbCrLf
  strText = strText & "MediaPlayer.openPlayer (" & Chr(34) & strMP3 & Chr(34) & ")"
  Set f = fso.OpenTextFile(strVBS, 2, True)
  f.Write strText
  f.Close
  Set WshShell = CreateObject("WScript.Shell")
  WshShell.Run "wscript " & strVBS, 1, True
  Set WshShell = Nothing
  Sleep 200
  Kill strVBS
  unvisible
End Sub

  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Beverly
Geschrieben am: 13.10.2014 08:04:48

Hi Elmar,

versuche es mal auf diesem Weg:

Option Explicit

Private Declare Function WaitForSingleObject Lib "kernel32" _
   (ByVal hHandle As Long, _
   ByVal dwMilliseconds As Long) As Long

Private Declare Function FindWindow Lib "user32" _
   Alias "FindWindowA" _
   (ByVal lpClassName As String, _
   ByVal lpWindowName As String) 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

Private Declare Function IsWindow Lib "user32" _
   (ByVal hwnd As Long) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" _
   (ByVal hwnd As Long, _
   lpdwProcessId As Long) As Long

'Constants that are used by the API
Const WM_CLOSE = &H10
Const INFINITE = &HFFFFFFFF
Const SYNCHRONIZE = &H100000

Sub LiedAbspielen()
    Open_File "C:\Magical Opulence\-1-.mp3", 1   ' <== 1 bedeutet, der Mediaplayer wird  _
angezeigt
End Sub


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Elmar
Geschrieben am: 13.10.2014 08:22:21

Hallo Karin,
kann es leider erst gegen späteren Nachmittag testen, weil ich erst dann den Rechnen mit Excel 2007 wieder habe. Eine Frage aber voarb.. Was heißt, "1" der Mediaplayer wird angezeigt? Schön wäre es, wenn der nur im Hintergrund läuft.

Danke schon mal für Deine Unterstützung

Grüße Elmar


  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Beverly
Geschrieben am: 13.10.2014 08:45:36

Hi Elmar,

0 anstelle der 1 bedeutet, dass der Mediaplayer "unsichtbar" bleibt.

Wenn er nicht sichtbar ist bedeutet das allerdings, dass du ihn nicht abstellen kannst bevor das Lied zuende ist.


GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Elmar
Geschrieben am: 15.10.2014 13:06:59

Hallo Karin,

danke nochmal für Deine Hilfe. Hab leider erst jetzt Zeit weiter zu machen und noch eine Frage, denn der Code will noch nicht so, wie ich will...
Wenn ich das Makro starte bekomme ich Meldung "Sub oder Function nicht definiert" und die blaue Markierung bleibt auf "open_file" stehen.
Hast Du eine Idee, wie ich hier weiterkommen könnte?
Danke mal vorab
Elmar


  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Beverly
Geschrieben am: 15.10.2014 13:59:11

Hi Elmar,

sorry, da fehlte noch ein Teil des Codes - so müsste er jetzt funktionieren:

Option Explicit

Private Declare Function WaitForSingleObject Lib "kernel32" _
   (ByVal hHandle As Long, _
   ByVal dwMilliseconds As Long) As Long

Private Declare Function FindWindow Lib "user32" _
   Alias "FindWindowA" _
   (ByVal lpClassName As String, _
   ByVal lpWindowName As String) 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

Private Declare Function IsWindow Lib "user32" _
   (ByVal hwnd As Long) As Long

Private Declare Function GetWindowThreadProcessId Lib "user32" _
   (ByVal hwnd As Long, _
   lpdwProcessId As Long) As Long

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 nShowCmd As Long) As Long

'Constants that are used by the API
Const WM_CLOSE = &H10
Const INFINITE = &HFFFFFFFF
Const SYNCHRONIZE = &H100000

Sub Open_File(strFileName As String, windowType As Integer)
    ShellExecute 0, "Open", strFileName, "", "", windowType
End Sub

' Start-Makro
Sub LiedAbspielen()
    Open_File "C:\Magical Opulence\-1-.mp3", 1   ' <== 0 bedeutet, dass der Mediaplayer  _
geschlossen bleibt
End Sub

GrußformelBeverly's Excel - Inn


  

Betrifft: AW: Mediaplayer starten über Makro geht nicht in Excel von: Elmar
Geschrieben am: 15.10.2014 14:05:57

Hallo Karin,
nun alles perfekt.... Klasse Unterstützung, DANKE DIR TAUSENDMAL :)

Elmar


 

Beiträge aus den Excel-Beispielen zum Thema "Mediaplayer starten über Makro geht nicht in Excel"