У меня есть настройка для отображения статуса/панели мониторинга, по сути, журнала, который обновляется с другого компьютера. Это работает через Excel, вот так:
- Кто-то добавляет данные в таблицу «Log_Source.xlsx», расположенную на сетевом ресурсе, и сохраняет их.
- Компьютер на панели (это Intel Compute Stick (Windows 10 Home) и настенный монитор) имеет локальный файл «Log_Dashboard.xlsx» с подключением к исходному файлу в сети. Запрос обновляется каждую минуту. Таким образом, панель может извлекать и отображать данные практически в режиме реального времени, не блокируя файл для редактирования.
Проблема:
Каждые несколько дней я получаю сообщение на панели мониторинга о том, что источник данных не найден. И он больше не будет обновлять данные. Закрытие и повторное открытие Log_Dashboard.xlsx исправляет это, но как я могу предотвратить это?
Что я пробовал:
- В параметрах электропитания Windows: изменен план на «Высокая производительность». Настройте жесткий диск так, чтобы он никогда не выключался. Установите беспроводной адаптер на «Максимальная производительность».
- Запланировал запуск скрипта AutoHotKey каждые 12 часов, который просто перемещает мышь вперед и назад. Я думал, что это может помешать компьютеру перейти в спящий режим, если проблема была в этом.
- Добавил макрос в файл Excel, который закрывает и снова открывает его каждый час. Поскольку я вручную каждый раз исправляю проблему, я думал, что это решит ее, но она все еще происходит.
Есть предложения? Или если есть другой подход к настройке отображения приборной панели, я открыт для этого... Спасибо.
решение1
Публикую то, что сработало для меня, на случай, если кто-то еще столкнется с подобной проблемой в будущем:
Я так и не смог понять, почему постоянно обрывалось соединение с данными. Я переключил компьютер «панели управления» с подключенного по Wifi Intel Compute Stick на старый компактный настольный компьютер с подключением по Ethernet. Это немного помогло, но я все еще сталкивался с обрывами соединения с данными, а также с другими ошибками 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
Это просто сохраняет книгу, запускает команду оболочки, которая отображает сообщение о перезапуске панели мониторинга (на случай, если кто-то в это время смотрит на экран), а затем повторно открывает файл 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
макрос. Который просто снова запускает цикл, закрывая и снова открывая файл.
Я уверен, что есть способ сделать это лучше, но с момента внедрения этих изменений все стало практически стабильно.