Создать сводную таблицу не работает в новой версии Excel - PullRequest
0 голосов
/ 01 апреля 2019

Мой макрос должен создать сводную таблицу и добавить специальные фильтры.Для этого я использовал макро-рекордер, он работает на моем компьютере, но не на более новых версиях Excel.Вот мой код:

Cells.Select
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "1!R1C1:R1048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
    TableDestination:="Tabelle2!R3C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion14
Sheets("Tabelle2").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable2").PivotFields("PlatzID/Gerät")
    .Orientation = xlRowField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
    "PivotTable2").PivotFields("Tagabfluss"), "Anzahl von Tagabfluss", xlCount
With ActiveSheet.PivotTables("PivotTable2").PivotFields("Anzahl von Tagabfluss" _
    )
    .Caption = "Summe von Tagabfluss"
    .Function = xlSum
End With

Я пытался изменить Version:=xlPivotTableVersion14 на Version:=xlPivotTableVersion15 и другие числа, которые относятся к другим версиям Excel, но ни одна из них не работает.

Я использую Excel 2010мои коллеги используют Excel 2013. Функция отладки выделяет:

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    "1!R1C1:R1048576C13", Version:=xlPivotTableVersion14).CreatePivotTable _
    TableDestination:="Tabelle2!R3C1", TableName:="PivotTable2", _
    DefaultVersion:=xlPivotTableVersion14

1 Ответ

0 голосов
/ 01 апреля 2019

Во-первых, вам действительно не следует использовать целые столбцы для исходных данных сводной таблицы. Во-вторых, разбиение кода на отдельные разделы поможет вам определить, является ли ошибка при создании сводной кеша или самой сводной таблицы. Я бы предложил использовать:

Dim pivotSheet As Worksheet
Set pivotSheet = Sheets.Add
With Sheets("1")
    Dim pc As PivotCache
    Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
                SourceData:="'" & .Name & "'!" & .Range("A1").CurrentRegion.Address(ReferenceStyle:=xlR1C1), _
                Version:=xlPivotTableVersion14)
End With

Dim pt As PivotTable
Set pt = pc.CreatePivotTable(TableDestination:=pivotSheet.Cells(3, 1), DefaultVersion:=xlPivotTableVersion14)

With pt
    With .PivotFields("PlatzID/Gerät")
        .Orientation = xlRowField
        .Position = 1
    End With
    .AddDataField .PivotFields("Tagabfluss"), "Summe von Tagabfluss", xlSum
End With
...