Ich habe ein Setup, um eine Art Status/Dashboard anzuzeigen, im Wesentlichen ein Protokoll, das von einem anderen Computer aktualisiert wird. Es funktioniert über Excel, und zwar so:
- Jemand fügt Daten zu einer Tabelle in „Log_Source.xlsx“ hinzu, die sich auf einer Netzwerkfreigabe befindet, und speichert sie.
- Der Dashboard-Computer (ein Intel Compute Stick (Windows 10 Home) und ein an der Wand montierter Monitor) verfügt über eine lokale Datei, „Log_Dashboard.xlsx“, mit einer Datenverbindung zur Quelldatei im Netzwerk. Die Abfrage wird jede Minute aktualisiert. Auf diese Weise kann das Dashboard die Daten nahezu in Echtzeit abrufen und anzeigen, ohne die Datei für die Bearbeitung zu sperren.
Das Problem:
Alle paar Tage erhalte ich auf dem Dashboard die Meldung, dass die Datenquelle nicht gefunden werden konnte. Außerdem werden die Daten nicht mehr aktualisiert. Das Schließen und erneute Öffnen von Log_Dashboard.xlsx behebt das Problem, aber wie kann ich verhindern, dass dies erneut auftritt?
Was ich versucht habe:
- In den Energieeinstellungen von Windows: Auf den Energiesparplan „Höchstleistung“ geändert. Festplatte so einstellen, dass sie nie ausgeschaltet wird. WLAN-Adapter auf „Maximale Leistung“ einstellen.
- Ich habe ein AutoHotKey-Skript geplant, das alle 12 Stunden ausgeführt wird und die Maus einfach hin und her bewegt. Ich dachte, das könnte verhindern, dass der Computer in den Ruhezustand wechselt, falls das das Problem ist.
- Der Excel-Datei wurde ein Makro hinzugefügt, das sie stündlich schließt und wieder öffnet. Da ich das Problem jedes Mal manuell auf diese Weise behebe, dachte ich, dass es damit gelöst wäre, aber es passiert immer noch.
Irgendwelche Vorschläge? Oder wenn es einen anderen Ansatz zum Einrichten einer Dashboard-Anzeige wie dieser gibt, bin ich auch dafür offen ... Danke.
Antwort1
Ich poste, was bei mir funktioniert hat, nur für den Fall, dass jemand anders mit einem ähnlichen Problem in Zukunft darüber stolpert:
Ich konnte nie herausfinden, warum die Datenverbindung immer wieder abbrach. Ich habe den „Dashboard“-Computer von einem über WLAN verbundenen Intel Compute Stick auf einen alten, über Ethernet verbundenen Kompakt-Desktop umgestellt. Das hat etwas geholfen, aber ich hatte immer noch Verbindungsabbrüche und andere Excel-Fehler wie „Nicht genügend Arbeitsspeicher“.
Hier ist die Problemumgehung, die in meiner Situation endlich funktioniert hat:
Ich habe in die Excel-Datei („Log_Dashboard.xlsm“) ein Modul mit folgendem Code eingefügt:
Sub WorkbookSaveCycle()
ThisWorkbook.Save
PID = Shell("cmd /k @echo off & echo Restarting Dashboard, please wait... & @echo off & timeout /t 4 /nobreak & ""C:\Program Files (x86)\Microsoft Office\root\Office16\excel.exe"" """ & Application.ActiveWorkbook.FullName & """ & exit", vbMaximizedFocus)
Application.Quit
End Sub
Dadurch wird einfach die Arbeitsmappe gespeichert, ein Shell-Befehl ausgeführt, der eine Meldung anzeigt, dass das Dashboard neu gestartet wird (falls jemand zu diesem Zeitpunkt auf den Bildschirm schaut), und dann die Excel-Datei erneut geöffnet, nachdem einige Sekunden gewartet wurde, bis sie geschlossen wurde. ( excel.exe
Bei Verwendung einer anderen Office-Version muss der Dateipfad möglicherweise geändert werden.)
Dann habe ich das hier in das ThisWorkbook
Modul eingefügt:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
Application.OnTime Now + TimeValue("00:15:00"), "WorkbookSaveCycle"
End Sub
Wenn die Excel-Datei geöffnet wird, wird sie auf Vollbild eingestellt. Nach der vordefinierten Wartezeit (hier 15 Minuten) wird das obige WorkbookSaveCycle
Makro aufgerufen. Dadurch wird der Zyklus erneut in Gang gesetzt, indem die Datei geschlossen und erneut geöffnet wird.
Ich bin sicher, dass es dafür einen besseren Weg gibt, aber seit der Implementierung dieser Änderungen läuft es grundsätzlich absolut stabil.