Verlängerung der Wartezeit für OLE-Aktionen in Excel
Schritt-für-Schritt-Anleitung
-
Öffne deinen VBA-Editor in Excel (Alt + F11).
-
Finde den Code, der die OLE-Aktion ausführt. In diesem Fall ist es der Befehl, der Lingo aufruft.
-
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
-
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
Alternative Methoden
-
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.
-
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
.