VBA 2 Pivot Tables разные листы - PullRequest
0 голосов
/ 12 марта 2019

Я искал в Интернете, но у меня проблемы с поиском решения моей проблемы.У меня есть рабочая тетрадь с 2 вкладками данных.Я использую VBA для создания 2 сводных таблиц на 2 разных листах.Код отлично проходит через первую сводную таблицу.Второй набор кода для второй сводной таблицы останавливается в сводном кэше.Есть идеи?

 Dim sht As Worksheet
 Dim pvtCache As PivotCache
 Dim pvt As PivotTable
 Dim StartPvt As String
 Dim SrcData As String

 Dim finRow As String
  With ActiveWorkbook
  finRow = Sheets("WorbookName").Range("A200000").End(xlUp).Row
   SrcData = Sheets("WorkbookName").Name & "!" & Range("A1:I" & finRow).Address(ReferenceStyle:=xlR1C1)
  `End With`

  'Create a new worksheet
  Set sht = Sheets.Add

  'Pivot starting point?
   StartPvt = sht.Name & "!" & sht.Range("A1").Address(ReferenceStyle:=xlR1C1)

  'Create Pivot Cache from Source Data`
  Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
   SourceType:=xlDatabase, _
    SourceData:=SrcData)

  'Create Pivot table from Pivot Cache
   Set pvt = pvtCache.CreatePivotTable( _
   TableDestination:=StartPvt, _
   TableName:="PivotTable1")


   Set pvt = ActiveSheet.PivotTables("PivotTable1")`

 ================ Second Pivot table code  

Dim sht As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String`

'Pivot table range
Dim finRow As String
With Sheets("Data")
finRow = Sheets("Data").Range("A200000").End(xlUp).Row
  SrcData = ActiveSheet.Name & "!" & Range("A3:CB" & finRow).Address(ReferenceStyle:=xlR1C1)`
 End With

 'Create a new worksheet

  Set sht = Sheets.Add

 'Where do you want Pivot Table to start?
   StartPvt = sht.Name & "!" & sht.Range("A1").Address(ReferenceStyle:=xlR1C1)

   'Create Pivot Cache from Source Data`
   Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=SrcData)

'Create Pivot table from Pivot Cache
  Set pvt = pvtCache.CreatePivotTable( _
    TableDestination:=StartPvt, _
    TableName:="PivotTable2")

Любая предоставленная помощь высоко ценится.Спасибо, Мэтт

1 Ответ

0 голосов
/ 12 марта 2019

На данный момент в вашем коде ActiveSheet - это место, где вы разместили предыдущую сводную таблицу, а не тот лист, на котором вы собираетесь извлекать данные. В обоих случаях вы используете оператор With, но не используете.

Dim finRow As String
With Sheets("Data")
finRow = Sheets("Data").Range("A200000").End(xlUp).Row
  SrcData = ActiveSheet.Name & "!" & Range("A3:CB" & finRow).Address(ReferenceStyle:=xlR1C1)`
 End With

Попробуйте изменить ...

Dim finRow As Long
With Sheets("Data")
  finRow = .Range("A200000").End(xlUp).Row
  SrcData = .Range("A3:CB" & finRow).Address(ReferenceStyle:=xlR1C1)`
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...