vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB & Windows API
Fage zu einem Tipp 
Autor: Willie
Datum: 12.05.12 20:41

Guten Abend alle zusammen,
Ich bin neu in diesem Forum und hoffe, meine Frage an der richtigen Stelle zu plazieren.

Ich habe zum Abspielen von MP3 unter Excel-Makro einen älteren Tipp dieser Website benutzt.
www.vbarchiv.net/archiv/tipp_499.html

Die Routine funktioniert bestens, wenn ich sie auch nicht ganz verstehe, da ich Frischling bei VBA bin.

Mir fehlt nur ein Schritt dabei.
Ich höre es zwar, möchte aber im Code für Folgeschritte auswerten, wenn die MP3-Datei fertig abgespielt ist.
Wie kann ich eine Rückmeldung bekommen?

Mit der Suche war ich leider nicht erfolgreich.

Für eine Hilfestellung wäre ich sehr dankbar.

Gruß Willie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fage zu einem Tipp 
Autor: ModeratorMartoeng (Moderator)
Datum: 13.05.12 18:55

Wenn Dein Programm die Audiodatei synchron abspielen soll, ist das wait-Flag sehr nützlich. D.h. dann, dass Dein Programm nach Absetzen des Play-Befehls wartet, bis die Datei abgespielt wurde und erst dann die Verarbeitung weitergeht.

mciSendString "play MyMP3 from 0 wait", 0, 0, 0


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fage zu einem Tipp 
Autor: Willie
Datum: 13.05.12 21:14

Hallo Martoeng,
erst einmal vielen Dank für eine Antwort am Sonntag (da sitzen andere auf der Terrasse).

Leider kann ich die Antwort nicht so recht nachvollziehen, da ich leider nicht herausgefunden habe, wo ich es in der Routine ein- bzw. ersetze.

Vielleicht deshalb erstmal eine genauere Erklärung, wie ich die Routine benutze.

Da ich, wie schon geschrieben, noch nicht so in den Tiefen des VBA zuhause bin, habe ich die Routine für meine Zwecke nur unwesentlich verändert.

############
Makro von Tabelle6 mp3 START-STOP
############
Option Explicit
'ursprüngliche Zuweisung (Const myMP3 As String = "C:\abc.mp3")
Dim myMP3 As String
Dim blnDontPlayAgain As Boolean

Private Sub Worksheet_Calculate()
If [A1] > 0 Then
If Not blnDontPlayAgain Then

' MP3 abspielen
myMP3 = Cells(5, 1) 'Speicherort der abzuspielenden Datei

MP3_Play myMP3, "MyAlias"

blnDontPlayAgain = True

End If
.
.
.
#############################

Anstelle der konstanten Beispielzuordnung für myMP3 in Zeile 2 weise ich diesen Wert in Zeile 11 über die Zelle A5 des Arbeitsblattes zu.
Für die Zelle A1 ist die Abfrage auf "> 0" geändert, da ja nur der Wechsel +/- 1 ausgewertet wird.
Da die Zelle A1 die Funktion '=A2' enthält, muss ich jeweils die Zelle A2 ändern.
Warum die Änderung nicht direkt in A1 erfolgen kann, erzieht sich meiner Kenntnis, funktioniert jedenfalls nicht.

Ergebnis: per Makro den Speicherort der abzuspielenden Datei in die Zelle A5.
In der Userform ist ein Button (Start-Stop), der den Wert der Zelle A2 je nach Zustand
von '0' auf '1' oder von '1' auf '0' ändert.
Bei Änderung zu '1' startet die Wiedergabe, bei Änderung zu '0' stoppt sie.
Wenn die Datei jedoch fertig gespielt ist, bleibt der Wert der Zelle A2 auf '1'.

Folge: Wenn ich nach Beendigung der ersten MP3 der Zelle A5 eine neue Datei zugewiesen habe,
muss ich den Button (Start-Stop)in der Userform 2x anklicken.
Das 1. Mal für Änderung A2 = '0' (keine Reaktion, Datei fertig aber A2 noch immer '1' )
Das 2. Mal für Änderung A2 = '1' (Start der neuen Datei)
Ein ergonomisch unschönes Handling.

Aus diesem Grund die Frage nach einem Ende-Flag, das mein Programm auswerten kann, um nach Ende der MP3 den Wert der Zelle A2 per Makro automatisch auf 0 zu setzen, damit ich nach einer neuen Dateizuweisung den Start-Button nur 1x betätigen muss.

Ich hoffe, mein Problem etwas genauer verdeutlicht zu haben.

Gruß Willie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fage zu einem Tipp 
Autor: ModeratorMartoeng (Moderator)
Datum: 14.05.12 18:35

Das Ganze klingt sehr gruselig mit den Zellen und Zahlen, die ein Abspielen bedeuten.

Meine geschriebene Zeile muss entsprechend in der MP3_Play-Routine angepasst werden.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fage zu einem Tipp 
Autor: Willie
Datum: 14.05.12 19:18

Hallo,
mag sein, dass es für einen fortgeschrittenen Programmierer gruselig klingt.
Für mich als Anfänger ist es erst einmal ein gangbarer Weg, um ein funktionierendes Ergebnis zu bekommen. Schöner oder eleganter kommt danach.

Ich habe in der Zwischenzeit auch ein wenig über das Thema gesucht und gelesen.
Wenn ich den wait-Befehl richtig interpretiere, wartet die Routine, bis die Datei abgespielt ist, bevor sie einen neuen Befehl annimmt.
Das löst jedoch nicht mein Problem mit der Eingabe!

Die Routine startet über den Wechsel von 0 nach 1 und stoppt über den Wechsel von 1 nach 0.
Dies in der Zelle A2 des Tabellenblattes.

Ich kann den Start/Stop über einen Button in der Userform realisieren und es funktioniert auch.
Ich kann die Datei starten und stoppen mit jeweils einem Klick, solange sie gespielt wird.
Warte ich, bis die Datei vollständig abgespielt ist, möchte ich sie auch mit einem Klick starten.
Ob dies die selbe MP3 oder eine andere ist, ist nicht relevant.
Geht aber nicht, weil erst A2=0 sein muss, bevor der Startbefehl angenommen wird.
A2 bleibt auf 1, auch wenn die Datei fertig ist.

Also 2x Klicken für Start.

Ich finde einfach nichts, was mir eine Rückmeldung gibt, das die Datei fertig abgespielt ist, um die Rücksetzung auf 0 automatisch zu machen.

Gruß Willie
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Fage zu einem Tipp 
Autor: ModeratorMartoeng (Moderator)
Datum: 18.05.12 19:29

Sorry, aber der Ansatz den Status des Abspielens einer Datei über den Inhalt einer editierbaren Tabellenzelle zu machen ist einfach schon zu falsch, als dass man da jetzt noch sinnvoll was zu sagen könnte.


vbarchiv.dll (Freeware), Tutorials uvm. auf http://www.martoeng.com.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel