2016-07-24 3 views
0

Использование записи макросов, я произвел следующий код, чтобы добавить сводную таблицу:Ошибка при создании сводной таблицы с помощью VBA

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Step 1!R1C1:R30750C34", Version:=6).CreatePivotTable TableDestination:= _ 
     "Pivot Table 2!R1C1", TableName:="PivotTable3", DefaultVersion:=6 
    Sheets("Pivot Table 2").Select 
    Cells(1, 1).Select 
    With ActiveSheet.PivotTables("PivotTable3").PivotFields("STOCK NUMBER") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("DUO QTY"), "Sum of DUO QTY", xlSum 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("Excess"), "Sum of Excess", xlSum 
    ActiveSheet.PivotTables("PivotTable3").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable3").PivotFields("Cann"), "Sum of Cann", xlSum 

Затем я сделал одно изменение, так что номер строки для sourceData будет динамическим, а не фиксированной :

Sheets("Step 1").Activate 
Step1Rows = Sheets("Step 1").UsedRange.Rows.Count 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
    "Step 1!R1C1:R" & Step1Rows & "C34", Version:=6).CreatePivotTable TableDestination:= _ 
    "Pivot Table 2!R1C1", TableName:="PivotTable3", DefaultVersion:=6 

При запуске этого кода я получаю ошибку времени выполнения 5, неправильный вызов или аргумент процедуры. При дальнейшем исследовании я получаю ту же ошибку, если попытаюсь запустить записанный код. Сначала я думал, что это связано с жестко закодированным именем таблицы, но я попытался изменить это, и я все равно получаю ту же ошибку во время выполнения. Не знаю, как действовать прямо сейчас, поэтому, если кто-то может заметить что-то не так или предложить предложения, он будет очень признателен.

+0

какая версия Excel вы используете? не знакомы с 'DefaultVersion: = 6', см. документацию MSDN: https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlpivottableversionlist.aspx –

+0

Использование Excel 2016, – jerH

+0

Пробное изменение к 'DefaultVersion: = xlPivotTableVersion15' и получил ту же ошибку. На жаворонке попытался «DefaultVersion: = xlPivotTableVersion16» и получил переменную неопределенную ошибку .... – jerH

ответ

1

Несколько вопросов здесь.

Первый: магнитофон делает что-то неправильно с именем листа в TableDestination:= "Pivot Table 2!R1C1". Поскольку в нем есть пробелы, это должно быть TableDestination:= "'Pivot Table 2'!R1C1". Обратите внимание на имя в одинарных кавычках.

Второе: вы не можете создать новую сводную таблицу в диапазоне ячеек, которая уже содержит сводную таблицу. Поэтому либо вы должны сначала удалить старую сводную таблицу, либо вы должны обновить уже существующую сводную таблицу.

Если лист «Сводная таблица 2» содержит только эту сводную таблицу и ничего больше, то проще всего было бы:

Step1Rows = ActiveWorkbook.Worksheets("Step 1").UsedRange.Rows.Count 

ActiveWorkbook.Worksheets("Pivot Table 2").Cells.Delete 

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     "Step 1!R1C1:R" & Step1Rows & "C34", Version:=6).CreatePivotTable TableDestination:= _ 
     "'Pivot Table 2'!R3C1", TableName:="PivotTable3", DefaultVersion:=6 
+0

Одиночные кавычки были проблемой ... Не могу поверить, что я этого не видел. Макрос создает лист «Pivot Table 2», а затем добавляет сводную таблицу, поэтому нет проблем с этим ... но хорошо знать. Благодаря! – jerH

Смежные вопросы