したがって、パラメータを持つmsクエリがあります("qry_Accounting"と呼ぶことにします)。コンボボックス。こうすることで、データをコンボボックスでフィルタリングできます。パラメータを使用してmsクエリにリンクされたピボットテーブルを更新するときの古いデータ
次に、msクエリに基づいてピボットテーブルを作成しました。通常、コンボボックスで選択したアイテムにリンクされたデータを見ることができます。コンボボックスで選択したアイテムを変更すると、データが"qry_Accounting"に変わることがわかります。ボタンを作成しなければならなかったので、選択したアイテムを変更してボタンをクリックすると、ピボットテーブルが更新されます。
私の問題は、私のピボットテーブルに以前選択されたアイテムのデータと、そのデータだけです。私は本当に何が起こるかを理解していません。新しいピボットテーブルを作成すると正しいデータが得られますが、項目を変更してもその動作は継続しますが、以前のデータは常に保持していますが、新しいデータは取得しません。
もう1つ、手動でテーブルを更新すると機能します。複数のピボットテーブルが同じqry_Accountingテーブルにリンクされている場合、そのテーブルの1つをリフレッシュするときにも機能します。
いつでも手動で更新するようにユーザーに依頼せずに正しいデータを表示するにはどうすればよいですか?
PS:既に「フィールドごとに保持するアイテムの数」のプロパティを「none」に変更しました。ここにコメント内のいくつかの質問に続いて
(コンボボックスの変更を適用するには、ボタンをクリックすると)私のコードの詳細です:
Sub Button5_Click()
'If the buffer place (O4) is different from the combo linked cell (F4) then
'assign the value from F4 to O4.
'the table will then be updated because as soon as O4 value changes the
'table is updated (the parameter is taken from O4)
If Sheets("base_pivot").Range("O4").Value <> Sheets("base_pivot").Range("F4").Value Then
Sheets("base_pivot").Range("O4").Value = Sheets("base_pivot").Range("F4").Value
'We wait 5 seconds to avoid access denied problems
Application.Wait (Now + #12:00:05 AM#)
'we ask for a refresh of the pivot tables explicitely
RefreshPivotTables ActiveWorkbook
'we ask for a refresh of all data.
ActiveWorkbook().RefreshAll
End If
End Sub
サブRefreshPivotTablesコード
Sub RefreshPivotTables(wb As Workbook)
Dim ws As Worksheet
Dim pt As PivotTable
Dim pi As PivotItem
Dim pf As PivotField
For Each ws In wb.Worksheets
For Each pt In ws.PivotTables
pt.PivotCache().Refresh
pt.RefreshTable
Next
Next
End Sub
それ以外はすべて自動です。 msクエリにはパラメータがあるため、O4値が更新されるとすぐに新しいデータがテーブルにロードされます。 それでは、枢着座をリフレッシュするための唯一のことです。
を学びました'PivotCache'を更新するには、' PivotCache'を新しい "Data-Range"で更新し、 'pt.RefreshTable'を使う必要があります。 –
Hey There Shai Rado、あなたの答えに感謝します。私はオンラインでチェックし、マイクロソフトによると、これは読んだだけです。 https://msdn.microsoft.com/en-us/library/office/ff834938(v=office.15).aspx –
読み取り専用とは何ですか?ピボットキャッシュ? –