Publicando o que funcionou para mim apenas no caso de alguém com um problema semelhante se deparar com isso no futuro:
Nunca consegui descobrir por que a conexão de dados continuava caindo. Eu troquei o computador "dashboard" de um Intel Compute Stick conectado por Wi-Fi para um desktop compacto antigo conectado à Ethernet. Isso ajudou um pouco, mas ainda experimentei quedas de conexão de dados, junto com outros erros do Excel, como "Sem memória".
Aqui está a solução que finalmente funcionou para mim, na minha situação:
Eu inseri um módulo no arquivo do Excel ("Log_Dashboard.xlsm") com o seguinte código:
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
Isso simplesmente salva a pasta de trabalho, executa um comando shell que exibe uma mensagem que o painel está reiniciando (caso alguém esteja olhando para a tela no momento) e reabre o arquivo do Excel depois de esperar alguns segundos por para fechar. ( excel.exe
filepath pode ter que ser alterado se estiver usando uma versão diferente do Office)
Depois coloco isso no módulo ThisWorkbook
:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
Application.OnTime Now + TimeValue("00:15:00"), "WorkbookSaveCycle"
End Sub
Quando o arquivo do Excel é aberto, ele o define para tela cheia e, depois de aguardar o período de tempo predefinido (15 minutos aqui), chama a macro WorkbookSaveCycle
acima. Que apenas define o ciclo em movimento novamente fechando e reabrindo o arquivo.
Tenho certeza de que há uma maneira melhor de fazer isso, mas tem sido praticamente estável desde a implementação dessas mudanças.