Tengo un libro de trabajo con 20 tablas dinámicas diferentes. ¿Hay alguna manera fácil de encontrar todas las tablas dinámicas y actualizarlas en VBA?¿Cómo puedo actualizar todas las tablas dinámicas en mi libro de Excel con una macro?
Respuesta
Sí.
ThisWorkbook.RefreshAll
O, si su versión de Excel es lo suficientemente grande,
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
Usted tiene un tablas dinámicas recogida en una hoja de cálculo de la VB objeto. Por lo tanto, un bucle rápido como esto funcionará:
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
Notas desde las trincheras:
- Recordar para desproteger todas las hojas protegidas antes de actualizar la tabla dinámica.
- Guardar con frecuencia.
- me ocurrirá más y actualización en su debido momento ... :)
Buena suerte!
Este código de VBA actualizará todas las tablas/tablas dinámicas en el libro de trabajo.
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
Otra opción no es programático:
- Haga clic derecho sobre cada tabla pivote
- Seleccione Opciones de la tabla
- marque la 'actualizar al abrir' opción.
- Haga clic en el botón OK
Esto actualizará la tabla dinámica cada vez que se abre el libro.
Hay una opción de actualizar todo en la barra de herramientas de la tabla dinámica. Es suficiente. No tienes que hacer nada más.
Presione Ctrl + Alt + F5
No estoy de acuerdo. ¿Qué pasa si Lipis quiere automatizar el proceso de actualización, por ejemplo, cada vez que se cambia una celda? – StockB
En ciertas circunstancias, es posible que desee diferenciar entre una tabla dinámica y su PivotCache. El caché tiene su propio método de actualización y sus propias colecciones. Así que podríamos haber actualizado todos los PivotCaches en lugar de los PivotTables.
¿La diferencia? Cuando crea una nueva tabla dinámica, se le pregunta si la quiere basándose en una tabla anterior. Si dice que no, esta tabla dinámica obtiene su propio caché y duplica el tamaño de los datos de origen. Si dices que sí, mantén tu libro de trabajo pequeño, pero lo agregas a una colección de tablas pivote que comparten un único caché. Toda la colección se actualiza cuando actualiza cualquier tabla dinámica en esa colección. Por lo tanto, puede imaginarse la diferencia entre actualizar cada caché en el WorkBook, en comparación con actualizar cada tabla dinámica en el WorkBook.
Si está utilizando MS Excel 2003, vaya a la vista-> Barra de herramientas-> Tabla dinámica ¡Desde esta barra de herramientas podemos actualizar haciendo clic!este simbolo
He utilizado el comando enumerado a continuación en el pasado reciente y parece funcionar bien.
ActiveWorkbook.RefreshAll
Espero que ayude.
Ayuda mucho ... pero ¿no viste que en realidad está escrito arriba? ¿Como hace 4 años? (http://stackoverflow.com/a/70976/8418) – Lipis
ActiveWorkbook.RefreshAll
actualiza todo, no solo las tablas dinámicas sino también las consultas ODBC. Tengo un par de consultas VBA que se refiere a las conexiones de datos y el uso de esta opción los accidentes como el comando ejecuta las conexiones de datos sin el detalle suministrado desde el VBA
recomiendo la opción si sólo desea que los pivotes refrescados
Sub RefreshPivotTables()
Dim pivotTable As PivotTable
For Each pivotTable In ActiveSheet.PivotTables
pivotTable.RefreshTable
Next
End Sub
marque la respuesta más votada ... el segundo enfoque es en realidad lo que intentó aquí ... pero para todo el boom ... no solo para la hoja activa ... tampoco caso realmente depende ... y no lo he tocado desde ... – Lipis
El código
Private Sub Worksheet_Activate()
Dim PvtTbl As PivotTable
Cells.EntireColumn.AutoFit
For Each PvtTbl In Worksheets("Sales Details").PivotTables
PvtTbl.RefreshTable
Next
End Sub
funciona bien.
El código se utiliza en el módulo de hoja de activación, por lo que muestra un parpadeo/falla cuando la hoja está activada.
Incluso podemos actualizar la conexión particular y, a su vez, actualizará todos los pivotes vinculados a ella.
Para que este código he creado la máquina de cortar de la tabla presente en 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
- 1. ¿Cómo llamar macro macro específica de una hoja de un libro de Excel en otro?
- 2. ejecutando excel macro desde otro libro de trabajo
- 3. ¿Cómo puedo modificar un libro de Excel existente con Perl?
- 4. Unir Múltiples Tablas Dinámicas Dinámicas
- 5. ¿Cómo puedo usar JavaScript dentro de una macro de Excel?
- 6. Cómo exportar todas las tablas de una Base de datos de Access a Excel - Una hoja para cada tabla
- 7. ¿Cómo puedo unir tres tablas con SQLalchemy y mantener todas las columnas en una de las tablas?
- 8. ¿Cómo puedo listar todas las tablas en una base de datos con Squirrel SQL?
- 9. ¿Cómo puedo cambiar los prefijos en todas las tablas de mi base de datos MySQL?
- 10. Actualizar una columna, todas las filas
- 11. Uso de drools expert con tablas dinámicas de decisión
- 12. ¿Cómo puedo colocar todas las tablas en mi base de datos?
- 13. ¿Cómo truncar todas las tablas de usuario?
- 14. Reparar todas las tablas de una vez
- 15. Seleccionar de todas las tablas
- 16. ¿Cómo puedo crear una nueva base de datos SQLite, con todas las tablas, sobre la marcha?
- 17. ¿Cómo configurar una prueba unitaria en VBA Excel Macro?
- 18. C#: ¿Cómo puedo abrir y cerrar un libro de Excel?
- 19. Psql enumera todas las tablas
- 20. Macro de VBA para comparar todas las celdas de dos archivos de Excel
- 21. tablas dinámicas en SQL Server con espacios en la celda
- 22. Macro independiente de Excel
- 23. Tablas dinámicas y SQL dinámicas de T-SQL
- 24. Elementos obsoletos en la lista de tablas dinámicas
- 25. Cómo copiar datos de otro libro de trabajo (excel)?
- 26. ¿Cómo puedo encontrar todas las unidades en mi aplicación Delphi?
- 27. ¿Combina varias celdas en una en Excel con macro?
- 28. actualizar una columna para todas las filas
- 29. Obtener todas las columnas de todas las tablas MySQL
- 30. ¿Cómo puedo actualizar mi ADT en Eclipse?
Ooh, un downvote. Después de más de cinco años, es un cambio refrescante;) – GSerg
De hecho ... eso es refrescante ... alguien incluso está tratando de cerrar esta pregunta como fuera de tema ... No es como si pidiera hacerlo solo con el mouse o cualquier cosa : D – Lipis
Fantástico, tuve que usarlo porque quería actualizar los pivots DESPUÉS de obtener nuevos datos externos, por lo que ThisWorkbook.RefreshAll no funcionaba para mí. – Yasskier