我有一個設定來顯示某種狀態/儀表板,本質上是從另一台電腦更新的日誌。它透過 Excel 工作,如下所示:
- 有人將資料加入位於網路共用上的「Log_Source.xlsx」中的表中,並儲存它。
- 儀表板電腦(英特爾運算棒(Windows 10 家用版)和壁掛式顯示器)有一個本機檔案“Log_Dashboard.xlsx”,該檔案與網路上的來源檔案有資料連線。查詢每分鐘刷新一次。這樣,儀表板就可以幾乎即時地提取和顯示數據,而無需鎖定文件進行編輯。
問題:
每隔幾天,我就會在儀表板上收到一封訊息,大意是找不到資料來源。並且不再更新資料。關閉並重新開啟 Log_Dashboard.xlsx 可以修復此問題,但如何防止這種情況發生?
我嘗試過的:
- 在 Windows 電源設定中:變更為高效能計畫。將硬碟設定為永不關閉。將無線適配器設定為最高效能。
- 安排 AutoHotKey 腳本每 12 小時運行一次,該腳本只需來回移動滑鼠。我認為這可能會阻止電腦進入睡眠狀態(如果這是問題的話)。
- 向 Excel 文件添加了一個宏,每小時關閉並重新打開它。鑑於這就是我每次手動解決問題的方式,我以為這樣就可以解決問題,但它仍然發生。
有什麼建議麼?或者,如果有另一種方法來設定像這樣的儀表板顯示,我願意......謝謝。
答案1
發布對我有用的內容,以防其他有類似問題的人將來偶然發現這一點:
我始終無法弄清楚為什麼數據連線不斷斷開。我將「儀表板」電腦從連接 Wifi 的英特爾計算棒更換為舊的連接乙太網路的緊湊型桌上型電腦。這有所幫助,但我仍然遇到資料連線遺失以及其他 Excel 錯誤,例如「記憶體不足」。
在我的情況下,這是最終對我有用的解決方法:
我使用以下程式碼將模組插入到 Excel 檔案(“Log_Dashboard.xlsm”)中:
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
這只是保存工作簿,運行一個 shell 命令,顯示儀表板正在重新啟動的消息(以防有人當時正在查看螢幕),然後在等待幾秒鐘關閉 Excel 文件後重新打開它。 (excel.exe
如果使用不同版本的 Office,則可能需要變更檔案路徑)
然後我將其放入ThisWorkbook
模組中:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
Application.OnTime Now + TimeValue("00:15:00"), "WorkbookSaveCycle"
End Sub
當 Excel 檔案開啟時,這會將其設為全屏,然後在等待預先定義的時間(此處為 15 分鐘)後,請呼叫上述WorkbookSaveCycle
巨集。這只是透過關閉並重新開啟檔案來再次啟動循環。
我確信有更好的方法可以做到這一點,但自從實施這些更改以來,它基本上一直堅如磐石。