11

前回の投稿「初回実行時に Excel のピボットテーブル データを自動更新する」で、最初の実行時に外部データ ソースからのクエリが更新され、実行に約 1 分かかることがわかりました。2 回目の実行では、ピボット テーブルが更新されます。

をクリックして、外部データ ソースとピボット テーブルの両方をタイム スケジュール内で一緒に更新するソリューション ( VBA コードcommand button) はありますか(タイマーを設定するとします)。

4

5 に答える 5

12

上記の回答を使用しましたが、 RefreshAll メソッドを使用しました。また、名前を指定しなくても複数の接続ができるように変更しました。次に、これをスプレッドシートのボタンにリンクしました。

Sub Refresh()

    Dim conn As Variant

    For Each conn In ActiveWorkbook.Connections
        conn.ODBCConnection.BackgroundQuery = False
    Next conn

    ActiveWorkbook.RefreshAll
End Sub
于 2013-09-16T20:02:47.940 に答える
4

Background Query プロパティを False に設定せずに、更新が完了するまで Excel を待機させる簡単な方法があると思います。なぜ人々の好みを台無しにするのですか?

Excel 2010 (およびそれ以降) には CalculateUntilAsyncQueriesDone と呼ばれるこのメソッドがあり、RefreshAll メソッドを呼び出した後に呼び出すだけで済みます。Excel は計算が完了するまで待機します。

ThisWorkbook.RefreshAll
Application.CalculateUntilAsyncQueriesDone

私は通常、モデルを他の人に送信する前に、これらをまとめて、中断することなく完全なマスター計算を行います。このようなもの:

ThisWorkbook.RefreshAll
Application.CalculateUntilAsyncQueriesDone
Application.CalculateFullRebuild
Application.CalculateUntilAsyncQueriesDone
于 2015-05-27T07:07:34.430 に答える
0

たとえば、5 秒ごとにワークブックを 自動更新します。モジュールに適用

Public Sub Refresh()
'refresh
ActiveWorkbook.RefreshAll

alertTime = Now + TimeValue("00:00:05") 'hh:mm:ss
    Application.OnTime alertTime, "Refresh"

End Sub

開いているブックに適用

Private Sub Workbook_Open()
alertTime = Now + TimeValue("00:00:05") 'hh:mm:ss
Application.OnTime alertTime, "Refresh"
End Sub

:)

于 2014-02-28T18:14:24.530 に答える