爽やかなすべてのピボットテーブルマexcelのワークブックマクロ
質問
私はワークブックは20の異なるピボットテーブル.が簡単ですべてのピボットテーブルリフレッシュしVBA?
解決
そうです。
ThisWorkbook.RefreshAll
やめたい場合、エクセル版には古いですが、
Dim Sheet as WorkSheet, Pivot as PivotTable
For Each Sheet in ThisWorkbook.WorkSheets
For Each Pivot in Sheet.PivotTables
Pivot.RefreshTable
Pivot.Update
Next
Next
他のヒント
このVBAコードでリフレッシュすべてのピボットテーブル/チャートのワークブック.
Sub RefreshAllPivotTables()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
Next PT
Next WS
End Sub
他の非programaticオプション:
- 右のをクリックするとピボットテーブル
- 選択テーブルオプション
- チェックを 'リフレッシュオープン" オプションです。
- をクリックOKボタン
これをリフレッシュピボットテーブルの各時間のワークブックを開きます。
ActiveWorkbook.RefreshAll
更新のものになピボットテーブルにもODBCます。私はカップルのVBAのクエリを参照するデータ接続、このオプションを使用クラッシュとしてのコマンドにデータ接続の詳細から供給されるVBA
私のおすすめのオプションが、ピボットリフレッシュ
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
特定の状況下するための差別化とPivotTableとそのPivotCache.キャッシュにはリフレッシュ方法およびそョンにします。そしてリフレッシュすべてのPivotCachesの代わりにPivotTables.
本当は違いがあると思います。新規作成する場合のピボットテーブルと言われたらい前ます。というと、このピボットテーブルが独自のキャッシュの倍のサイズのデータです。だいりんごワークブックは小さめですが、追加のコレクションへのピボットテーブルを共有する単一ます。コレクションの全種類を取得しaltova diffdogは、スクリーンショットにxmlspyリフレッシュルピボットテーブルを収集します。想像できるための差が爽やかな毎にキャッシュのワークブックで、爽やかな毎ピボットテーブルにワークブック.
がありリフレッシュすべてのオプションは、ピボットテーブルのツールバーがあります。ることは必要なものではありません。あさなければいけないのです。
Ctrl+alt+F5
お持ちの PivotTables コレクションのVB ワークシート オブジェクトです。なので、ループのようにこれは動作します:
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
注からは溝:
- 覚えて各ず保護シートを更新する前に、PivotTable.
- 保存しばしば.
- ょう便局とファミリーマートがあり、更新によるコース---:)
幸運を祈っています。
このコード
Private Sub Worksheet_Activate()
Dim PvtTbl As PivotTable
Cells.EntireColumn.AutoFit
For Each PvtTbl In Worksheets("Sales Details").PivotTables
PvtTbl.RefreshTable
Next
End Sub
に働きます。
このコードを使用して起動シートモジュールは、このように表示され、フリッカ/マのシートを起動します。
も またリフレッシュできる特定の接続 やまリフレッシュすべてのピボットリンクします。
このコードを制作しましたスライサーからのテーブルに存在Excel:
Sub UpdateConnection()
Dim ServerName As String
Dim ServerNameRaw As String
Dim CubeName As String
Dim CubeNameRaw As String
Dim ConnectionString As String
ServerNameRaw = ActiveWorkbook.SlicerCaches("Slicer_ServerName").VisibleSlicerItemsList(1)
ServerName = Replace(Split(ServerNameRaw, "[")(3), "]", "")
CubeNameRaw = ActiveWorkbook.SlicerCaches("Slicer_CubeName").VisibleSlicerItemsList(1)
CubeName = Replace(Split(CubeNameRaw, "[")(3), "]", "")
If CubeName = "All" Or ServerName = "All" Then
MsgBox "Please Select One Cube and Server Name", vbOKOnly, "Slicer Info"
Else
ConnectionString = GetConnectionString(ServerName, CubeName)
UpdateAllQueryTableConnections ConnectionString, CubeName
End If
End Sub
Function GetConnectionString(ServerName As String, CubeName As String)
Dim result As String
result = "OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
'"OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False"
GetConnectionString = result
End Function
Function GetConnectionString(ServerName As String, CubeName As String)
Dim result As String
result = "OLEDB;Provider=MSOLAP.5;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" & CubeName & ";Data Source=" & ServerName & ";MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Update Isolation Level=2"
GetConnectionString = result
End Function
Sub UpdateAllQueryTableConnections(ConnectionString As String, CubeName As String)
Dim cn As WorkbookConnection
Dim oledbCn As OLEDBConnection
Dim Count As Integer, i As Integer
Dim DBName As String
DBName = "Initial Catalog=" + CubeName
Count = 0
For Each cn In ThisWorkbook.Connections
If cn.Name = "ThisWorkbookDataModel" Then
Exit For
End If
oTmp = Split(cn.OLEDBConnection.Connection, ";")
For i = 0 To UBound(oTmp) - 1
If InStr(1, oTmp(i), DBName, vbTextCompare) = 1 Then
Set oledbCn = cn.OLEDBConnection
oledbCn.SavePassword = True
oledbCn.Connection = ConnectionString
oledbCn.Refresh
Count = Count + 1
End If
Next
Next
If Count = 0 Then
MsgBox "Nothing to update", vbOKOnly, "Update Connection"
ElseIf Count > 0 Then
MsgBox "Update & Refresh Connection Successfully", vbOKOnly, "Update Connection"
End If
End Sub
私はコマンドを使ってください以下に、最近の過去という。
ActiveWorkbook.RefreshAll
い役立っています。
ご利用の場合はMS Excel2003し、その他のビュー>ツールバー>ピボットテーブルからこのツールバーをリフレッシュをクリック!このシンボルです。