Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Verlängerung Wartezeit für Rückmeldung

Forumthread: Verlängerung Wartezeit für Rückmeldung

Verlängerung Wartezeit für Rückmeldung
22.06.2016 16:05:05
Lisafred
Hallo zusammen,
ich habe ein Problem mit der Länge der Wartezeit, die VBA auf die Rückmeldung anderer Programme wartet und würde diese gerne verlängern.
Ich habe einen Code geschrieben, der eine andere Software Lingo aufruft. Lingo benötigt allerdings mindestens 5 Minuten um zu einer Lösung zu kommen, die Lingo danach an Excel übergeben soll. Das Problem ist, dass Excel nur 1:30 auf die Antwort von Lingo wartet und dann den Fehler "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung." ausgibt. Ich würde die Wartezeit von Excel gerne auf über 5 Minuten hochsetzen. Hat jemand eine Idee wie man da vorgehen kann?
Mit Sleep und Application.Wait Funktionen habe ich es schon probiert. Diese greifen leider nicht an der richtigen Stelle und scheinen diese 1:30 Wartezeit von Excel nicht zu beeinflussen.
Ich würde mich sehr über Antwort freuen.
Viele Grüße
Lisafred

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verlängerung Wartezeit für Rückmeldung
22.06.2016 16:22:33
Michael
Hi,
kann Lingo (was auch immer das sein mag) die Ausgabe in eine Datei schreiben? Dann kann man Lingo (evtl. auf dem Umweg über eine Batch-Datei) starten und mit .Wait alle x Sekunden mit Dir nachsehen, ob die Datei schon da ist.
Ob es direkt in Excel was gibt, wissen andere Helfer sicher besser als ich.
Schöne Grüße,
Michael

Anzeige
AW: Verlängerung Wartezeit für Rückmeldung
22.06.2016 17:00:31
Lisafred
Hallo Michael,
Lingo ist eine Optimierungssoftware, die meinen in Excel aufgebauten Datensatz einliest und löst. Der Lösungswert muss danach von Lingo an Excel übergeben werden und weiter verarbeitet werden. Problem bei der Fehlermeldung "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung." ist, dass man auf "OK" klicken muss um die Fehlermeldung zu beseitigen und Excel wieder zum Laufen zu bringen. Selbst wenn ich die Lösungswerte in eine andere Datei schreiben würde, bekomme ich Excel nicht wieder zum laufen ohne manuell auf "OK" zu klicken. Da ich sehr viele Durchläufe habe, ist das manuelle klicken auf "OK" leider keine Option.
VG
Lisafred

Anzeige
AW: Verlängerung Wartezeit für Rückmeldung
22.06.2016 17:15:07
Michael
Hi,
- wie wird der "Datensatz eingelesen"? Via Datei?
- wie startest Du Lingo?
- wie wird der Wert "an Excel übergeben"?
Mit ein paar Codezeilen ist die Fragestellung vielleicht plausibler.
Gruß,
Michael

AW: Verlängerung Wartezeit für Rückmeldung
22.06.2016 22:51:39
Lisafred
Hallo Michael,
Lingo ist als ein Object in Excel eingebettet. Innerhalb des Objekts Lingo werden in Excel definierte Daten über eine @OLE (Object Linking and Embedding) Funktion in Lingo eingelesen. Das funktioniert über einen Standardcode und funktioniert auch in anderen Settings.
Lingo wird über folgenden Befehl aufgerufen, der immer funktioniert und von Lingo definiert ist:
Set Lingo = CreateObject("LINGO.Document.4")
Dim iErr As Integer
iErr = Lingo.RunScriptRange("MODEL") 'in dieser Zeile wird Lingo gestartet und die Daten aus  _
Excel eingelesen
If (iErr > 0) Then
MsgBox ("Unable to solve model - Error: " & iErr)
Stop
End If 
Der Lösungswert den Lingo definiert soll ebenfalls über eine @OLE Schreibfunktion (Standard in Lingo) an ein anderes Excelsheet übergeben werden.
Problem ist, dass Excel in der Ausführungszeile von Lingo (iErr = Lingo.RunScriptRange("MODEL")) im Code hängen bleibt solange Lingo rechnet. Und nach 1:30 Minute ist Excel der Meinung, dass er nicht länger warten kann und gibt die Fehlermeldung "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung." aus. Womit Excel komplett blockiert ist.

Anzeige
mir zu hoch. Rudi? Nepumuk?
23.06.2016 13:16:25
Michael
Hi,
ist das das: http://www.scientific-solutions.ch/de/product/lingo/description
Da steht was von DLL oder OLE oder "von Excel Makro aus aufrufen", deshalb frage ich mich, ob es nicht eine andere Möglichkeit als OLE gibt, wie z.B. über die Shell. Mir liegt das Handbuch ja nicht vor.
Der Timeout in Excel selbst ist mir zu hoch, ich stelle mal auf offen.
Schöne Grüße,
Michael

Anzeige
OT: LINGO kenne ich als OOL aus/in Director! ...
23.06.2016 18:45:22
Luc:-?
…Das damit noch gearbeitet wird? Erstaunlich! ;-)
Gruß, Luc :-?

AW: OT: LINGO kenne ich als OOL aus/in Director! ...
24.06.2016 12:45:32
Michael
Ja, das war auch das Ergebnis meiner ersten Recherche, aber mit "Lingo Optimierung" kommt denn der Link raus, das scheint doch was anderes zu sein (auch wenn vielleicht die Syntax angelehnt sein mag).
Man findet relativ wenig im Netz zu dem konkreten Ding.
Vielleicht müßte man einfach für den "verlängerten Support" bezahlen, und das Problem würde sich in Luft auflösen...
Gruß,
Michael

Anzeige
AW: Verlängerung Wartezeit für Rückmeldung
28.06.2016 09:45:30
EtoPHG
Hallo Lisafred,
Eine OLE Automation läuft generell Asynchron zum ExcelThread. Wird diese nicht innerhalb 90 Sekunden beendet meldet Excel den "Timeout". Um dies zu verhindern, bzw. dem OLE Thread "beliebig lange Zeit zu geben", bietet sich das Ausschalten der Alarmmeldung (vor dem .RunScriptRange) an

Application.DisplayAlerts = False
iErr = Lingo.RunScriptRange("MODEL")
Application.DisplayAlerts = True
Gruess Hansueli

Anzeige
AW: Verlängerung Wartezeit für Rückmeldung
28.06.2016 22:39:28
Lisafred
Hallo Hansueli,
so klappt es. Vielen Dank für die Hilfe.
Ich musste zusätzlich noch die MIP/GAP-Toleranz meines Solvers auf 5% setzen und den Speicher erweitern und dann wird mein Problem auch schon in einer Stunde gelöst :)
VG
Lisafred
;
Anzeige

Infobox / Tutorial

Verlängerung der Wartezeit für OLE-Aktionen in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne deinen VBA-Editor in Excel (Alt + F11).

  2. Finde den Code, der die OLE-Aktion ausführt. In diesem Fall ist es der Befehl, der Lingo aufruft.

  3. Füge die folgenden Zeilen vor der Ausführung des OLE-Befehls ein, um die Alarmmeldungen auszuschalten:

    Application.DisplayAlerts = False
    iErr = Lingo.RunScriptRange("MODEL") 'Hier wird die OLE-Aktion ausgeführt
    Application.DisplayAlerts = True
  4. Teste den Code, um sicherzustellen, dass die Fehlermeldung "Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung" nicht mehr auftritt.


Häufige Fehler und Lösungen

  • Fehler: Microsoft Excel wartet auf die Beendigung einer OLE-Aktion in einer anderen Anwendung

    • Lösung: Verwende Application.DisplayAlerts = False, um die Warnmeldungen während der Ausführung zu unterdrücken.
  • Fehler: Excel bleibt hängen und zeigt keine Rückmeldung

    • Lösung: Stelle sicher, dass die OLE-Aktion korrekt implementiert ist und keine Endlosschleifen im Code vorhanden sind.

Alternative Methoden

  1. Batch-Datei verwenden:

    • Du kannst eine Batch-Datei erstellen, die Lingo aufruft und in regelmäßigen Abständen überprüft, ob die Ausgabe vorliegt. Dies kann durch das Einfügen von Pausen (timeout /t 5) erreicht werden, um 5 Sekunden zu warten.
  2. VBA-Timeout anpassen:

    • Verwende den VBA-Befehl DoEvents, um Excel Zeit zu geben, andere Prozesse zu verarbeiten, während es auf die OLE-Aktion wartet.

Praktische Beispiele

Hier ist ein Beispiel, das die Verwendung von OLE in Excel zeigt:

Set Lingo = CreateObject("LINGO.Document.4")
Dim iErr As Integer
Application.DisplayAlerts = False
iErr = Lingo.RunScriptRange("MODEL") ' OLE-Aktion aufrufen
Application.DisplayAlerts = True

If (iErr > 0) Then
    MsgBox ("Unable to solve model - Error: " & iErr)
End If

In diesem Code wird die OLE-Aktion gestartet, und durch das Ausschalten der Alarmmeldungen wird verhindert, dass Excel blockiert.


Tipps für Profis

  • Verwende DoEvents: Dieser Befehl kann nützlich sein, um Excel die Verarbeitung anderer Ereignisse zu ermöglichen, während auf die OLE-Aktion gewartet wird.

  • Speichere regelmäßig: Wenn du häufig mit OLE-Aktionen arbeitest, stelle sicher, dass du deine Arbeit regelmäßig speicherst, um Datenverluste zu vermeiden.

  • Erhöhe die MIP/GAP-Toleranz: In einigen Fällen kann es hilfreich sein, die Toleranzen im Solver anzupassen, um die Berechnungen zu optimieren.


FAQ: Häufige Fragen

1. Wie lange kann ich auf eine OLE-Aktion warten? Die Standardwartezeit für OLE-Aktionen in Excel beträgt 90 Sekunden. Dieser Wert kann jedoch durch Programmierung geändert werden.

2. Was ist eine OLE-Aktion in Excel? OLE (Object Linking and Embedding) ist eine Technologie, die es ermöglicht, Inhalte zwischen Anwendungen zu teilen. In Excel bedeutet das, dass du Daten von einer Anwendung in eine andere übertragen kannst.

3. Wie kann ich eine OLE-Aktion beenden? Du kannst OLE-Aktionen in Excel beenden, indem du die Anwendung schließt oder das entsprechende Objekt mit Set object = Nothing aufhebst.

4. Was tun, wenn Excel keine Rückmeldung gibt? Wenn Excel keine Rückmeldung gibt, solltest du zunächst überprüfen, ob ein Prozess hängt oder ob eine OLE-Aktion zu lange dauert. In vielen Fällen hilft das Deaktivieren von DisplayAlerts.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige