| |
VB & Windows APIFage 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 | |
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 | |
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 | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|