Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
780to784
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
780to784
780to784
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ereignismakro: WAV Datei abspielen

Ereignismakro: WAV Datei abspielen
09.07.2006 09:30:27
Fritz
Hallo Forumsbesucher,
ich habe wieder eine Aufgabe, bei der ich die VBA-Experten um Hilfe bitte:
In einer Tabelle habe ich in der Zelle I33 eine Formel, die mir entweder einen Textwert oder "" liefert. Im Verzeichnis C:\Lieder habe ich einige wav-Dateien, die möglicherweise den Namen haben, der in I33 erscheint (z.B. in I33 steht Karl und eine Datei in C:\Lieder heißt karl.wav).
Ich möchte nun, dass die entsprechende wav-Datei abgespielt wird, wenn die Tabelle aktiviert wird und wenn sich (bei geöffneter Tabelle) bei der Änderung des Wertes in Zelle I33 eine entsprechende wav-Datei in C:\Lieder befindet.
Lässt sich das realisieren.
Vorab vielen Dank für eure Unterstützung.
Gruß
Fritz

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ereignismakro: WAV Datei abspielen
09.07.2006 09:45:28
Josef
Hallo Fritz!
Das geht z. B. so.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Private Declare Function waveOutGetNumDevs Lib "WINMM" () As Integer
Private Declare Function sndPlaySound Lib "WINMM" Alias "sndPlaySoundA" _
  (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Private Sub Worksheet_Change(ByVal Target As Range)
Dim dummy As Long, strFile As String
If Target.Address = "$I$33" Then
  If Target <> "" Then
    strFile = "C:\Lieder\" & Target.Text & ".wav"
    If Dir(strFile) <> "" Then
      dummy = sndPlaySound(strFile, 0)
    End If
  End If
End If
End Sub


Gruß Sepp

Anzeige
AW: Ereignismakro: WAV Datei abspielen
09.07.2006 10:12:57
Fritz
Hallo Sepp,
beim Testen ergab sich folgende Situation:
liefert die Formel in I33 aufgrund von Dateneingaben in anderen (!) Zellen in der Tabelle einen anderen Textwert in I33 passiert nichts. Es wird nur dann das gewünschte Lied abgespielt, wenn ich in I33 "direkt" einen entsprechenden Wert eintrage, also die in dieser Zelle vorhandene Formel überschreibe.
Wenn ich die Tabelle aktiviere, passiert ebenfalls nichts.
Könnte man zumindest das eine oder andere noch ändern?
Bereits an dieser Stelle vielen Dank
Gruß
Fritz
AW: Falsches Ereignis!
09.07.2006 10:11:24
Josef
Hallo Fritz!
Wer lesen kann....
So läufts bei Änderung durch berechnung.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Private Declare Function sndPlaySound Lib "WINMM" Alias "sndPlaySoundA" _
  (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

Public oldValue As String

Private Sub Worksheet_Calculate()
Dim dummy As Long, strFile As String
If Range("I33").Text <> "" And Range("I33").Text <> oldValue Then
  oldValue = Range("I33").Text
  strFile = "C:\Lieder\" & Range("I33").Text & ".wav"
  If Dir(strFile) <> "" Then
    dummy = sndPlaySound(strFile, 0)
  End If
End If
End Sub


Gruß Sepp

Anzeige
AW: Falsches Ereignis!
09.07.2006 10:32:02
Fritz
Hallo Sepp,
bei Änderung des Zellwertes durch Berechnung werden die Lieder jetzt abgespielt, soweit sie sich in dem Ordner auch befinden. Zwei Besonderheiten noch:
Alle bisher "gestesten" Lieder werden nicht in voller Länge gespielt, interessant für mich dabei ist, dass die Spieldauer dabei eine unterschiedliche "Länge" hat.
Soange das Lied gespielt wird, kann in der Tabelle nicht "gearbeitet" werden. Muss das sein?
Schönen Gruß und schon jetzt ein dickes "Dankeschön".
Fritz
AW: Falsches Ereignis!
09.07.2006 10:45:45
Josef
Hallo Fritz!
Das ist so wie bei jedem anderen Makro. So lange es läuft, kann man in der Tabelle nicht arbeiten.
Alternative:
Füge aus der Steuerelemente-Toolbox das "WndowsMediaPlayer" Steuerelement ein.
Du findest es unter "Weitere Steuerelemente".
Stelle in den Eigenschaften Visible=False ein und verwende diesen Code, dann
kannst du während der Wiedergabe weiterarbeiten.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Public oldValue As String

Private Sub Worksheet_Calculate()
Dim dummy As Long, strFile As String
If Range("I33").Text <> "" And Range("I33").Text <> oldValue Then
  oldValue = Range("I33").Text
  strFile = "C:\Windows\Media\" & Range("I33").Text & ".wav"
  If Dir(strFile) <> "" Then
    WindowsMediaPlayer1.URL = strFile
  End If
End If
End Sub


Gruß Sepp

Anzeige
AW: Falsches Ereignis!
09.07.2006 11:31:52
Fritz
Hallo Sepp,
es läuft wie gewünscht! Vielen Dank!
Trotzdem bin ich nicht sicher, ob ich alles deinen Vorgaben entsprechend umsetzen konnte. Ich habe in der Steuerelemente-Toobox beim Windows-Media Player in den Eigenschaften Visible=False eingestellt, dennoch wird der MediaPlayer eingeblendet!
Hab ich da was falsch gemacht oder war das so gedacht? Beim Öffnen der Arbeitsmappe wird das jeweilige Lied auch immer gespielt, das war so nicht beabsichtigt, dagegen beim Aktivieren der betreffenden Tabelle. Vielleicht war das ein Missverständnis.
Zumindest wollte ich nicht, dass beim Öffnen der Datei das Lied gespielt wird.
Vielleicht lässt sich das noch ändern.
Vielen Dank!
Gruß
Fritz
Anzeige
AW: Falsches Ereignis!
09.07.2006 11:46:10
Josef
Hallo Fritz!
Der Player wird bei mir nicht eingeblendet!
Vom Absielen beim Aktivieren war auch nicht die Rede;-)
So sollte es laufen.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
blnAction = False
End Sub


' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit
Const cPath As String = "C:\Lieder\"
Private oldValue As String

Private Sub Worksheet_Activate()
Dim dummy As Long, strFile As String
blnAction = True
If Range("I33").Text <> "" Then
  oldValue = Range("I33").Text
  strFile = cPath & Range("I33").Text & ".wav"
  If Dir(strFile) <> "" Then
    WindowsMediaPlayer1.URL = strFile
  End If
End If
End Sub


Private Sub Worksheet_Calculate()
Dim dummy As Long, strFile As String
If blnAction Then
  If Range("I33").Text <> "" And Range("I33").Text <> oldValue Then
    oldValue = Range("I33").Text
    strFile = cPath & Range("I33").Text & ".wav"
    If Dir(strFile) <> "" Then
      WindowsMediaPlayer1.URL = strFile
    End If
  End If
End If
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public blnAction As Boolean

Gruß Sepp

Anzeige
AW: Falsches Ereignis!
09.07.2006 12:07:41
Fritz
Hallo Sepp,
aufgrund meiner (äußerst) begrenzten VBA-Kenntnisse muss ich Dich schon wieder bemühen.
Bitte um Entschuldigung! Ich möchte Dich nicht nerven.
Folgendes habe ich getan:
1. Die nachofolgende Anweisung dem Worbook_Open Ereignis in Diese Arbeitsmappe
hinzugefügt:
blnAction = False
2. Diesen letzten Teil deines Codes so in ein (einfaches) Modul der Datei kopiert.
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************
Option Explicit
Public blnAction As Boolean
3. Den Rest als Code im der jeweiligen Tabelle untergebracht.
Jetzt kommt aber beim Aktivieren dieser Tabelle folgende Fehlermeldung:
Fehler beim Kompilieren! Variable nicht definiert.
Das Ganze bezieht sich auf folgende Anweisung im Worksheet_Activate Ereignis:
blnAction = True
Was mach ich falsch?
Vielen Dank für deine Arbeit und (!) deine Hundsgeduld mit mir!
Gruß
Fritz
Anzeige
AW: Falsches Ereignis!
09.07.2006 12:13:18
Josef
Hallo Fritz!
Laut deiner Beschreibung hast du alles richtig gemacht!
Überprüfe nochmals die Schreibweise der Variablen.
Gruß Sepp

AW: Falsches Ereignis!
09.07.2006 12:53:40
Fritz
Hallo Sepp,
eine kurze Rückmeldung:
1. Sowohl beim Öffnen der Datei (Arbeitsmappe) als auch beim Aktivieren der Tabelle kamen Fehlermeldungen. Nachdem ich die Anweisung: Public blnAction As Boolean in das Modul der Tabelle zusätzlich kopiert hatte, waren die Fehlermeldungen weg beim Aktivieren der Tabelle. Danach habe ich diese Anweisung in das Modul "Diese Arbeitsmappe" kopiert, danach auch keine Fehlermeldungen mehr beim Öffnen.
Ich weiß zwar nicht, ob das o.K. war, aber soweit so gut.
Allerdings werden Lieder immer noch beim Öffnen der Datei abgespielt.
Gruß
Fritz
Anzeige
AW: Falsches Ereignis!
09.07.2006 12:55:35
Josef
Hallo Fritz!
Die Variable "blnAction" gehört in ein allgemeines Modul (&gt Einfügen &gt Modul)!
In den anderen Modulen hat sie nichts verloren.
Gruß Sepp

AW: Falsches Ereignis!
Fritz
Hallo Sepp,
offensichtlich muss die Variable "blnAction" in ein eigenes (neues) Modul. Das hatte ich nicht getan sondern in ein bestehendes kopiert. So funktioniert es ohne Fehlermeldungen, leider wird beim Öffnen der Datei nach wie vor das Lied abgespielt, dass dem Eintrag in der betreffenden Tabelle in Zelle I33 "entspricht".
Muss jetzt aber weg. Ich werde aber der Sache nachgehen und - wenn ich neue Erkenntnisse hab - ggf. nochmals melden.
Auf jeden Fall hast Du mir (zum xten Mal) sehr geholfen und ich freu mich immer, wenn Du Dich meiner Beiträge annimmst.
Schönen Gruß
Fritz
Anzeige

16 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige