2017-07-27 12 views
3

私はワークシートを持っていますDataウェブはダイナミックリンクに基づいてデータをスクラップします。 Dataワークシートに基づくピボット・テーブルを持つ別のPivotTableがあります。自動更新データ変更時のピボットテーブル

Dataワークシートは次のマクロを使用して、新しい更新データをスクラップする前にセルの内容を消去します。このデータは1分ごとに更新されます。

データの更新時にピボットテーブルを更新する次のコードがあります。 ThisWorkbook.Worksheets(「ピボット」)。ピボットテーブル(「PivotTable1」)。RefreshTableの

データの更新が完了するまでに約20秒かかるので、(セルの内容を最初にクリアされるように)、データがないピボットテーブルのリフレッシュする。だから、私はエラーが発生します。

With ThisWorkbook.Worksheets("Data").QueryTables.Add(Connection:= _ 
     "<URL redacted>", Destination:=ThisWorkbook.Worksheets("Data").Range("$A$1")) 
     .Name = "DataPull" 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlEntirePage 
     .WebFormatting = xlWebFormattingNone 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=True '  .Delete 
End With 

私は.RefreshStyle = xlInsertDeleteCells.RefreshStyle = xlOverwriteCellsにを更新しようとしている:

Dataは、データを更新するために、次のコードを使用しています。しかし、新しいデータの行の終わりまでセルを上書きします。新しいデータ(行数)が古いデータの行よりも小さい場合、最後の古いデータ行は削除されません。 私は最新の更新のデータを保持したいだけです。

上記の条件に基づいてピボットテーブルを自動更新するにはどうすればよいですか?

答えて

0

はちょうどあなたのクエリが同期的に実行されるように.BackgroundQuery = Falseを設定する(つまり、データがピボットリフレッシュを行う前にロードするために、それが待機します)。

+0

ありがとうございます。 .BackgroundQuery = TrueをFalseに更新し、また.Refresh BackgroundQuery:= TrueをFalseに変更しました。 –

0

doループを使用して、掻き取りが完了するまで待ちます。

 Do 
     Err.Clear 
     On Error Resume Next 
     Debug.Print Err.Number 
     ThisWorkbook.Worksheets("PivotTable").PivotTables("PivotTable1").RefreshTable 
     Debug.Print Err.Number 
    Loop While Err.Number > 0 
関連する問題