Справочная информация. У меня есть книга с множеством вкладок, в которую вводятся данные из базы данных SQL (см. Пример запроса ниже). И по множеству причин мне нужно создать много сводных таблиц на каждой вкладке, потому что каждая сводная таблица должна смотреть на один конкретный набор данных. Каждый раз, когда я создаю сводную таблицу, мне нужно go в «Параметры сводной таблицы» и записывать сводный номер, а затем обновлять код VBA с помощью соответствующего последовательного кода Set pvt = Me.PivotTables("PivotTable###")
.
Вопросы: Является ли есть ли код 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