ステータス/ダッシュボードのようなものを表示するための設定があります。基本的には、別のコンピューターから更新されたログです。これは、Excel 経由で次のように機能します。
- 誰かがネットワーク共有にある「Log_Source.xlsx」のテーブルにデータを追加して保存します。
- ダッシュボード コンピューター (Intel Compute Stick (Windows 10 Home) と壁掛けモニター) には、ネットワーク上のソース ファイルへのデータ接続を持つローカル ファイル "Log_Dashboard.xlsx" があります。クエリは 1 分ごとに更新されます。このため、ダッシュボードは、編集のためにファイルをロックすることなく、ほぼリアルタイムでデータを取得して表示できます。
問題:
数日おきに、ダッシュボードに「データ ソースが見つかりません」というメッセージが表示されます。そして、データが更新されなくなります。Log_Dashboard.xlsx を閉じて再度開くと問題は解決しますが、この問題の発生を防ぐにはどうすればよいですか?
私が試したこと:
- Windows の電源設定で、高パフォーマンス プランに変更します。ハード ディスクの電源をオフにしないように設定します。ワイヤレス アダプターを最大パフォーマンスに設定します。
- マウスを前後に動かすだけの AutoHotKey スクリプトを 12 時間ごとに実行するようにスケジュールしました。これが問題であれば、コンピューターがスリープ状態になるのを防ぐことができると思いました。
- Excel ファイルに、1 時間ごとにファイルを閉じて再度開くマクロを追加しました。毎回手動で問題を修正する方法なので、これで問題は解決すると思いましたが、まだ発生しています。
何か提案はありますか? または、このようなダッシュボード表示を設定する別の方法があれば、それも検討します... ありがとうございます。
答え1
将来、同様の問題に遭遇した人がこれに遭遇した場合に備えて、私にとって効果があった方法を投稿します。
データ接続が切断され続ける理由を突き止めることはできませんでした。「ダッシュボード」コンピューターを、Wi-Fi 接続の Intel Compute Stick から、イーサネット接続の古いコンパクト デスクトップに切り替えました。これで多少は改善しましたが、それでもデータ接続が切断され、「メモリ不足」などの他の 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
マクロが呼び出されます。これにより、ファイルを閉じて再度開くことで、サイクルが再び開始されます。
もっと良い方法があると思いますが、これらの変更を実施してからは基本的に非常に安定しています。