Всем доброго дня!
Помогите, пожалуйста, решить проблему с ошибкой в TableDestination при вставке нескольких сводных таблиц на один лист.
Задача: необходимо разместить на одном листе несколько сводных таблиц с использованием макроса.
Т.к. исходная таблица может быть больше или меньше по количеству строк, то использую следующий макрос:
В приложенном файле "Пример" на листе "_Общая информация" тот вид таблиц, который пытаюсь получить...
Если важно - Excel из состава Microsoft Office профессиональный плюс 2016...
Помогите, пожалуйста, решить проблему с ошибкой в TableDestination при вставке нескольких сводных таблиц на один лист.
Задача: необходимо разместить на одном листе несколько сводных таблиц с использованием макроса.
Т.к. исходная таблица может быть больше или меньше по количеству строк, то использую следующий макрос:
Код |
---|
Dim wsh As Worksheet Dim ptCache As PivotCache Dim pt As PivotTable Dim FinalRow As Long Dim FinalCol As Long Dim DestLoc As String Set wsh = Worksheets("Исходная") FinalRow = wsh.Cells(Application.Rows.Count, 1).End(xlUp).Row FinalCol = wsh.Cells(Application.Columns.Count).End(xlToLeft).Column Set ptCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,_ SourceData:=wsh.Name & "!R5C1:R" & FinalRow & "C" & FinalCol, Version:=6) Set pt = ptCache.CreatePivotTable(TableDestination:="", TableName:="Сводная таблица2", DefaultVersion:=6) With ActiveSheet .Name = "_Общая информация" .PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1) End With With ActiveSheet.PivotTables("Сводная таблица2").PivotFields("Поставщик") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("Сводная таблица2").AddDataField ActiveSheet. _ PivotTables("Сводная таблица2").PivotFields("ШТ"), _ "Сумма по полю ШТ", xlSum |
При этом первая сводная таблица вставляется на новый пустой лист, я лист переименовываю , все работает.
После вставки первой сводной таблицы пытаюсь вставить на этот же лист новую таблицу:
Код |
---|
FinalRow = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row + 7 DestLoc = "_Общая информация!R" & FinalRow & "C1" Set pt = ptCache.CreatePivotTable(TableDestination:=DestLoc, TableName:="Сводная таблица3", DefaultVersion:=6) With ActiveSheet.PivotTables("Сводная таблица3").PivotFields("Тип") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("Сводная таблица3").AddDataField ActiveSheet. _ PivotTables("Сводная таблица3").PivotFields("ШТ"), _ "Сумма по полю ШТ", xlSum |
И получаю ошибку:
Цитата |
---|
Run-Time Error '5': Invalid procedure call or argument |
При этом, если в TableDestination указывать "TableDestination:=""", то все работает, но таблица вставляется на новый чистый лист.
Пробовал вариант из этой темы -
Пробовал явно указать место для вставки:
Код |
---|
Set pt = ptCache.CreatePivotTable(TableDestination:="_Общая информация!R27C1", TableName:="Сводная таблица3", DefaultVersion:=6) |
все равно та же ошибка...
Подскажите, пожалуйста, в какую сторону копать?В приложенном файле "Пример" на листе "_Общая информация" тот вид таблиц, который пытаюсь получить...
Если важно - Excel из состава Microsoft Office профессиональный плюс 2016...