Nun möchte ich mehrere Dateien hintereinander ablaufen lassen, ohne zwischendurch eingreifen zu müssen. Ich stelle mir vor, eine entsprechende Auswahl in den rechts danebenliegenden Zellen (Laufzeit) zu markieren. Nach dem Anklicken eines Buttons sollen die Links, deren Laufzeiten markiert sind, nacheinander starten.
Nun ja, da gibt es div. Probleme, fangen wir mal bei Shell an. Wie man in der Doku leicht nachlesen kann muss der Pfadname ein ausführbares Programm sein, also IRGENDWAS.EXE z.B. Dein MOS ist eine Datendatei die von einem anderen Programm geöffnet wird.
In einer Zelle hast Du einen Hyperlink und bei einem Klick darauf wird die MOS wiedergegeben, die Details wie das OS (nicht Excel!) das macht kann uns mal egal sein.
Wenn wir nun da geklickt haben, dann gibt es netterweise in einem Blatt ein Ereignis welches NACH dem Aufruf, der an das OS gegeben wurde, ausgeführt wird. In dem könnten wir nun recht einfach mal kucken ob es z.B. rechts neben der Zelle noch weitere Hyperlinks gibt und diese ebenfalls ausführen.
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
Dim F As Range, T As Range, All As Range
'Nächste Zelle rechts
Set F = Target.Range.Offset(, 1)
'Letzte Zelle rechts
Set T = F.Offset(, Columns.Count - F.Column).End(xlToLeft)
'Wenn die letzte vor der ersten liegt, dann gibt es keine weiteren
If T.Column < F.Column Then Exit Sub
'Ganzer Bereich
Set All = Range(F, T)
'Jede Zelle durchlaufen
For Each F In All
'Ist ein Link da?
If F.Hyperlinks.Count > 0 Then
'Aufrufen
ThisWorkbook.FollowHyperlink F.Hyperlinks(1).Address
End If
Next
End Sub
Da wir aber ein asynchron laufendes Multitasking-OS haben werden alle "Links" mit ein paar Millisekunden Verzögerung an Dein Abspielprogramm weitergegeben ... wenn Du Glück hast, dann hat dieses eine Playlist und es spielt alle MOS nacheinander ab.
Wenn Du Pech hast laufen die MOS entweder parallel oder der letzte Link unterbricht alle vorherigen und nur das letzte Video wird abgespielt. Dann kommt die Frage ob dein Abspielprogramm eine API hat auf die man zugreifen kann und somit wartet bis ein Video abgespielt wurde und erst dann das nächste startet. Über die Windows-API herauszufinden ob das Video abgespielt wurde ... so gut wie unmöglich.
Andreas.