【发布时间】:2020-08-19 21:16:12
【问题描述】:
背景:我有一个包含许多选项卡的工作簿,这些选项卡从 SQL 数据库中引入数据(请参阅下面的示例查询)。由于很多原因,我需要在每个选项卡中创建许多数据透视表,因为每个数据透视表都需要查看一组特定的数据。每次创建数据透视表时,我都必须转到“数据透视表选项”并记下数据透视表编号,然后使用适当的顺序代码 Set pvt = Me.PivotTables("PivotTable###") 更新 VBA 代码。
问题:是否有一些 VBA 代码可以引用每个选项卡中的所有数据透视表,而无需引用可数据透视的数字?因为我有很多选项卡,我需要创建很多数据透视表,但我忘记了可透视的数字。
Sub RefreshData()
Dim SQl As String
Dim startDATE As String, endDATE As String
Dim pvt As PivotTable
Set pvt = Me.PivotTables("PivotTable1")
Set pvt = Me.PivotTables("PivotTable2")
Set pvt = Me.PivotTables("PivotTable3")
'pvt.PivotCache.Connection = "ODBC;DSN=" & Application.Range("DSN_Source") & ";DATABASE=" & Application.Range("T123") & ";"
startDATE = Format(Me.Range("SDate"), "yyyy-mm-dd hh:mm:ss")
endDATE = Format(Me.Range("EDate"), "yyyy-mm-dd hh:mm:ss")
SQl = ""
SQl = "WITH ABC As " & vbCrLf
SQl = SQl & "( " & vbCrLf
SQl = SQl & " SELECT Stuff " & vbCrLf
SQl = SQl & ", more stuff, ROW_NUMBER() OVER (PARTITION BY RIGHT(Stuff, 2) " & vbCrLf
SQl = SQl & ", stuff1, stuff2, stuff3 ORDER BY Estuff4 DESC) As RowNum" & vbCrLf
SQl = SQl & " FROM StuffTable " & vbCrLf
SQl = SQl & " WHERE stuff = 'stuffy' AND " & vbCrLf
*snip
With pvt.PivotCache
.CommandType = xlCmdSql
.CommandText = SQl
End With
pvt.RefreshTable
End Sub
【问题讨论】:
标签: excel vba pivot-table