外部データベースからデータを自動的にロードする Excel ファイルがあります (Accesss データベースへのデータ接続を介して、Sharepoint テーブルにリンクされます)。次のプロセスを自動化する必要があります。
- エクセルファイルを開く
- データが更新されるのを待っています
- マクロの実行 (このファイル内)
- ファイルを閉じる
私が持っているスクリプトは次のとおりです。
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("excel spreadsheet.xlsm")
WScript.Sleep 1000 * 60 * 5
objExcel.Run "macro_name"
objWorkbook.close False
objExcel.Application.Quit
ただし、WScript.sleep でどのような遅延を設定しても、データは更新されません。代わりに、スプレッドシートに既に存在するデータに対してマクロを実行します。誰か助けてください!
解決
最終的に (そして数日間のライブ テストの恩恵を受けて)、以下が最もクリーンで効率的であるように思われます。
- VBスクリプトから「WScript.Sleep 1000 * 60 * 5」行を完全に削除する
- Excel で、各接続の [プロパティ] の [バックグラウンド更新を有効にする] チェックボックスをオフにします。
メインコードの前に次の行をマクロに追加します
ActiveWorkbook.RefreshAll
以下の回答で私を正しい方向に向けてくれた Philip と Santosh に感謝します。