3

外部データベースからデータを自動的にロードする 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 でどのような遅延を設定しても、データは更新されません。代わりに、スプレッドシートに既に存在するデータに対してマクロを実行します。誰か助けてください!


解決

最終的に (そして数日間のライブ テストの恩恵を受けて)、以下が最もクリーンで効率的であるように思われます。

  1. VBスクリプトから「WScript.Sleep 1000 * 60 * 5」行を完全に削除する
  2. Excel で、各接続の [プロパティ] の [バックグラウンド更新を有効にする] チェックボックスをオフにします。
  3. メインコードの前に次の行をマクロに追加します

    ActiveWorkbook.RefreshAll

以下の回答で私を正しい方向に向けてくれた Philip と Santosh に感謝します。

4

2 に答える 2

0

ワークブックでは、コードを実行する前に QueryTables のデータを更新する必要があります。

Excel vba マクロの先頭で、クエリテーブルでRefreshメソッドを呼び出さないのはなぜですか?

于 2013-05-23T15:19:10.070 に答える