Freigeben über

Start eines Fremdprogramms

Anonym
2022-04-30T16:37:39+00:00

Ich habe eine Themen-Liste für Präsentationen in Excel. In einer Zelle steht z. B. "Mamirauá / Uakarí-Lodge". Unterlegt ist dieser Zelle ein Link zur ausführbaren Datei des Programms "m.objects", der Link sieht dann so aus: "E:\anno\2015\1_Brasil\1_Mamiraua\Mamiraua_18'43.mos". Wenn ich die Zelle mit der linken Maustaste anklicke, startet nach einer Warnung ("Dateien können Viren enthalten...", was ich nicht sehr überraschend finde) das Programm m.objects mit dieser Datei.

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.

Schritt 1 wäre die Anfertigung einer Linkliste, die der Auswahl entspricht, was kein Problem darstellen sollte, Schritt 2 das Abarbeiten dieser Liste - was die Herausforderung ist. Bis jetzt habe ich leider schon bei der Ausführung von

Shell "E:\anno\2015\1_Brasil\1_Mamiraua\Mamiraua_18'43.mos", 3

nur eine Fehlermeldung "ungültiger Prozeduraufruf oder ungültiges Argument" bekommen. Warum - weiß ich nicht. Der Pfad stimmt. Kann jemand helfen?

Microsoft 365 und Office | Excel | Für Zuhause | Windows

Gesperrte Frage. Diese Frage wurde aus der Microsoft-Support-Community migriert. Sie können darüber abstimmen, ob sie hilfreich ist, aber Sie können keine Kommentare oder Antworten hinzufügen oder der Frage folgen.

0 Kommentare Keine Kommentare
{count} Stimmen

2 Antworten

Sortieren nach: Am hilfreichsten
  1. Andreas Killer 144K Zuverlässigkeitspunkte Freiwilliger Moderator
    2022-05-01T08:11:16+00:00

    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.

    0 Kommentare Keine Kommentare
  2. Anonym
    2022-05-01T07:11:25+00:00

    Guten Tag, 

    willkommen beim Microsoft Community Forum. Ihrer Beschreibung zufolge haben Sie ein Problem bei der Verwendung von Excel.

    Da ich nicht gesehen habe, wie Sie die Aktionsdatei ausgeführt haben, kann ich nicht sagen, warum ein Fehler gemeldet wird, daher schlage ich vor, dass Sie ein aufgezeichnetes Makro verwenden können.

    Klicken Sie auf Entwicklertools - Makro aufzeichnen - führen Sie dann die Aktionen aus, die Sie auf den Link geklickt haben, einschließlich der Aktion zum Öffnen des Links und der Aktion zum Klicken auf den zweiten Zellenlink, nachdem Sie dies getan haben, und klicken Sie dann auf Aufzeichnung beenden. 

    Dann hinzufügen Sie Schaltfläche von Formularsteuerelemente und wählen Sie das Makro.

    Klicken Sie nun auf Visual Basic

    Unter Module können Sie den Code überprüfen.

    Wenn Sie den Code nicht übergeben, kommt die direkte Vorgänge auch eine Fehlermeldung "ungültiger Prozeduraufruf oder ungültiges Argument", was bedeutet, dass ein Problem mit dem Inhalt des Links selbst vorliegt.

    Ich hoffe, dass meine Antwort auf Ihre Frage eingeht.

    Ich wünsche Ihnen einen schönen Ferientag.

    Mit freundlichen Grüßen

    Olivia | Microsoft Community Support Spezialist


    0 Kommentare Keine Kommentare