vba Автоматическое восстановление сводной таблицы DataField

Мне было поручено вести отчет с несколькими сводными таблицами, в которых суммируются листы источника данных, которые обновляются еженедельно.

Источники данных имеют несколько заголовков столбцов, которые меняются (например, октябрь, ноябрь, декабрь и 9/14, 9/21, 9/28). Таким образом, каждый раз, когда сводные таблицы обновляются, PivotFields отбрасываются и должны быть добавлены вручную вручную … для меня королевская боль! Во всяком случае, я пытался автоматизировать «перестройку» этих сводных таблиц. У меня есть код, который добавит позиционированный PivotField, однако заголовок должен быть введен. Я ищу способ передать текст в столбце источника данных в код, который обновляет стержень. Я опубликовал версию, которая работает при вводе, и версия, которая не работает там, где я пытаюсь передать текст из источника данных. Я считаю, что я близок, но я просто не могу понять, почему этот подход не работает. Любая помощь или идеи будут высоко оценены.

Код, который работает:

Sub pivottable1() With ActiveSheet.PivotTables("PivotTable4").PivotFields("Sep Actual Hrs thru 9/25") .Orientation = xlDataField .Position = 2 End With End Sub 

Моя попытка получить текст субтитров из источника данных (который в настоящее время не работает):

 Sub PivotFieldAdd() Dim pf As PivotField Worksheets("Actual Data").Select 'name of the data source 'pf = Range("I3").Value 'With ActiveSheet.PivotTables("PivotTable4").PivotFields("pf") 'this doesn't work either. With ActiveSheet.PivotTables("PivotTable4").PivotFields = Range("I3").Value .Orientation = xlDataField .Position = 2 End With End Sub 

(SOLVED) Назначение: восстанавливает точку поворота, когда изменяется заголовок столбца источника данных.

 Sub WklyPivotFieldAdd() 'Purpose: rebuilds pivot when data source column header changes. Dim pf1 As String Dim pf2 As String Application.ScreenUpdating = False 'Stops screen flicker, increases speed. pf1 = Worksheets("Actual Data").[I3] 'Location of the data source column header that changes pf2 = Worksheets("Actual Data").[J3] 'Location of the data source column header that changes 'Sets the PivotField name to the source column name for second column in DataField With ActiveSheet.PivotTables("PivotTable4").PivotFields(pf1) .Orientation = xlDataField 'Places the new column in the DataField area .Position = 2 'Second column over End With 'Sets the PivotField name to the source column name for Fifth column in DataField With ActiveSheet.PivotTables("PivotTable4").PivotFields(pf2) .Orientation = xlDataField 'Places the new column in the DataField area .Position = 5 'Fifth column over End With Application.ScreenUpdating = True 'Starts automatic screen updating End Sub 
Interesting Posts

Excel / VBA workbook.activesheet возвращает неверный лист

VBA-веб-соскабливание по интрасети

Установка нескольких внешних диапазонов рабочей книги в качестве переменных для текущей рабочей книги. Диапазон.

Поиск рекомендаций о том, как проектировать (1) Программное обеспечение для сбора данных и (2) Автоматизировать разработку основных данных в Excel

Использование функции timezone () в таблице с привязкой к excel

Копировать VBA Auto increment cell в диапазоне

Ошибка SQL Date в строке

Копирование строк в цикле и вставка на новый лист

Сколько X-клеток для добавления Y%

Подстрочный указатель вне диапазона / приложение определено или объектно определена ошибка VBA

C #: как скопировать диапазон ячеек Excel и данные диаграммы в слайды точки питания

Программа Excel с использованием C # VSTO

автоматически привязать команду к значению ячейки

Искать книгу для всех совпадений для строки

Excel, скопировать данные в тот же столбец (тот же рабочий лист), заменив пустые строки, но не заменяя следующую строку данными

Давайте будем гением компьютера.