2016-09-28 12 views
0

ЦЕЛЬCreatePivotTable() ошибка - приложения или объекта определенные ошибки

Создание сводной таблицы, основанный на динамическом диапазоне информации.

ПОДХОД

  1. Определить и активировать лист (ws), который содержит исходные данные (srcData, lastRow) для сводной таблицы
  2. Определить target лист, где новый поворотный стол (pvt) будет отображаться
  3. Выделить и записать исходные данные (srcData)
  4. Создать кеш-ключ ())
  5. Место сводной таблицы (startPvt) на листе & клеток

КОД

Sub createPivot() 

Dim ws As Worksheet 
Dim pvtCache As pivotCache 
Dim pvt As pivotTable 
Dim srcData As String 
Dim lastRow As Long 
Dim startPvt As String 
Dim target As Worksheet 

'Select pivot table data 
Worksheets("CONSOLIDATED").Activate 
Set ws = ActiveSheet 
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 
srcData = ActiveSheet.Name & "!" & Range("A1:H" & lastRow).Address(ReferenceStyle:=xlR1C1) 

'Set pivot table location 
Set target = ThisWorkbook.Worksheets("PIVOT") 
startPvt = target.Name & "!" & target.Range("A1").Address(ReferenceStyle:=xlR1C1) 

'Create pivot cache 
Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=srcData) 

Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=startPvt, _ 
    TableName:="PivotTable1") 

End Sub 

вдохновлен: http://www.thespreadsheetguru.com/blog/2014/9/27/vba-guide-excel-pivot-tables

ВОПРОСОВ

Ошибка выполнения '1004': Application или объекта определенные ошибки

@ линии:

Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=startPvt, _ 
    TableName:="PivotTable1") 

ВОПРОСЫ

  1. ли я схожу с ума ? Я исправляю этот код несколько раз и не могу понять, где я ошибаюсь. На данный момент я в недоумении. Любая помощь приветствуется объяснением причины возникновения ошибки.
+1

Невозможно воспроизвести вашу проблему. Я взял ваш точный код и сгенерирована сводная таблица. Вы уверены, что это проблема? Является ли эта часть большей части кода? – Parfait

+0

@Parfait - это полный код модуля. Интересно, требует ли меня настройки параметров в редакторе vba excel? – jonplaca

+0

Нет необходимости в настройке, так как все эти объекты, * pvtCache, pvtTable * имеют библиотеку объектов Excel. Я вижу задания * ThisWorkbook * и * ActiveWorkbook *. Вы работаете в разных книгах? – Parfait

ответ

0

Ответ мой собственный вопрос:

@Parfait был правильным, код не имеет ошибок. Однако макрос все еще обнаружил признаки замерзания во время фазы кэширования. Чтобы исправить эту ошибку, я добавил следующий код в начало базы кода.

'Delete previous pivottable 
Worksheets("PIVOT").PivotTables("PivotTable1").TableRange2.Clear 

Этот код удаляет любую существующую сводную таблицу при подготовке к новой таблице.

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