Сводная таблица vba excel - IT Новости из мира ПК
Remkomplekty.ru

IT Новости из мира ПК
10 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Сводная таблица vba excel

Сводные таблицы Excel

Мы не предлагаем рядовым пользователям использовать VBA для создания сводных таблиц. Цель этой статьи заключается в том, чтобы напомнить вам о том, что сводные таблицы можно (и нужно) использовать как средство получения окончательных результатов. Можете применить сводную таблицу для подведения итогов по набору данных, а затем использовать эти итоги в других расчетах.

Начиная с версии Excel 2007 пользовательский интерфейс управления сводными таблицами претерпел значительные изменения, но VBA-код, который используется для управления им, остается прежним. Разработчики сделали правильный выбор, иначе миллионы приложений, разработанных на VBA, попросту перестали бы выполняться в Excel 2007. Несмотря на изменение названий областей сводной таблицы в Excel, в VBA они продолжают носить старые имена: «область страницы» (Page Fields), «область столбцов» (Column Fields), «область строк» (Row Fields) и «область данных» (Data Fields).

В Excel 2000 и более поздних версиях, прежде чем создавать сводную таблицу, нужно сформировать объект кеша сводной таблицы, применяемый для описания области ввода данных.

После определения кеша сводной таблицы используйте метод СrеatePivotTable для создания пустой сводной таблицы на основе выделенного ранее кеша.

В методе CreatePivotTable вы указываете расположение выходных данных и (не обязательно) определяете имя таблицы с несколько странным видом. После выполнения этой строки кода вы получите пустую сводную таблицу. Если в области списка полей сводной таблицы был установлен флажок Отложить обновление макета (Defer Layout Update), то Excel не станет вновь вычислять сводную таблицу после перетаскивания в таблицу каждого поля. По умолчанию программа вычисляет сводную таблицу после выполнения каждого этапа построения макета таблицы. Таким образом, сводная таблица будет вычисляться много раз, пока не будет получен итоговый результат.

Чтобы ускорить выполнение кода, временно отключите вычисление сводной таблицы с помошью свойства ManualUpdate.

Теперь можно выполнять все операции по компоновке сводной таблицы.

В методе .AddFields указывается одно или несколько полей, которые должны находиться в области строк, столбцов или страниц сводной таблицы. Параметр RowFields позволяет определять поля, которые добавлены в область заголовков строк списка полей сводной таблицы. Параметр ColumnFields соответствует области заголовков столбцов, а параметр PageFields — области фильтров отчета.

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

Если в одну из областей сводной таблицы было добавлено единственное поле, например поле Регион в области столбцов сводной таблицы, имя поля заключается в кавычки. Если добавляются два либо больше полей, список полей включают в состав функции массива. Несмотря на то что поля строк, столбцов и страниц в сводной таблице могут обрабатываться с помощью метода .AddFields, для добавления полей в область данных лучше воспользоваться кодом, который будет описан в следующей статье.

VBA Excel PivotTable
Сводные таблицы

«Пример создания Сводной таблицы макросом VBA Excel (эксель)»

В процессе профессиональной деятельности, оператор-аналитик многократно выполняет перегруппировку исходных (сырых) данных в тот формат, который удобен ему для анализа (например: таблица, график, диаграмма). Это может быть фильтрация, сортировка, создание сводных таблиц и т.д. …

Вспомните и проанализируйте свою повседневную работу…
Как часто Вам приходится выполнять однотипные операции с однотипными файлами?
Это и есть — работа по определенному алгоритму
А значит, эту работу можно запрограммировать и поручить компьютеру…

Исходных данных может быть много!
Возможно, это будет множество листов во множестве книг Excel !
Результатов тоже может быть много (я имею в виду получение промежуточных результатов), но цель (или конечный результат) должна быть ясна и четко обозначена…
Один макрос может прочитать мегабайты данных из разных источников (обязательно предварительно указанных) и создать несколько новых файлов (или дописать информацию в существующие файлы)…

Мнение о Средствах (инструментах) специалиста-аналитика

Сфера деятельности специалиста-аналитика может быть любой (определяется компанией-работодателем), но в любом случае это работа с большими объемами информации. Как правило, информация поступает в виде однотипных файлов, генерируемых системами автоматического слежения за процессами или статистической отчетностью подразделений компании.

Файлы с расширением xlsx, а ранее xls (книги Excel) для этой цели подходят как нельзя лучше и используются чаще обычного.

В Вашей организации так? Или по-другому?

Начиная с MS Office 2007, для работы с макросами используются файлы с другим расширением: xlsm – книга Excel с поддержкой макросов. Поэтому наиболее целесообразно в виде инструментов специалисту-аналитику использовать именно файлы с расширением xlsm. Это будут небольшие файлы, не содержащие больших объемов данных, но содержащие программный код макроса и указывающие какой лист какой книги этому макросу следует обработать…

Такой инструмент дает возможность быстро использовать возможности макроса для многих файлов (регулярно поступающих к аналитику) без переноса VBA-модулей в них.

Проверка вводимых данных в Excel (ключевых для работы макроса)

Такой подход накладывает несколько более строгие требования к задаваемым ключевым данным для работы макроса (тем данным, которые вводятся над исполнительной командной кнопкой). И хотя (в случае их отсутствия) ничего страшного не произойдет и пользователь просто получит сообщение об ошибке, но желательно средствами макроса подсказать пользователю, что им «не так сделано» и как удовлетворить справедливые запросы макроса на данные…

Видимо, название листа с целевыми данными (в отличие от предыдущего файла) было изменено, но Вам всего лишь нужно уточнить (посмотреть) как именуется лист в новом файле и вбить новое название в ячейку «В2». Именно так! Не переименовывать лист под требования макроса, а изменить ключевые данные для макроса… Ведь те, кто создавал для Вас файл данных, по каким-то причинам переименовали Лист…, то есть, с большой вероятностью, и в следующем файле (например, через месяц) Лист будет называться по-новому…

Диалоговые окна Windows в макросах Word и Excel

Конечно, не очень сложно указать путь к требуемой книге Excel (ключевые данные для макроса в ячейке «В1»), но удобнее, как только Вы перешли в ячейку «В1» увидеть стандартное диалоговое окно Windows, специально предназначенное для открытия файлов и открыть книгу через него.

При этом в ячейку «В1» автоматически запишется имя открытой книги… В общем, сразу двух зайцев убиваем… И книга открыта, и макрос имеет на 100% безошибочные данные…

Читать еще:  Vba excel двумерный массив

Фильтры данных (информации из баз данных Excel)

Фильтрация данных – это как процесс получения полезного продукта из руды…, то есть отсев всего не нужного и повышение, таким образом, полезности информации…
Фильтрация производится по эталонным данным… Вы должны указать, что Вам нужно или что Вам не нужно…
То есть можно смело говорить о двух видах фильтров:

  • положительные фильтры – пропускают в результирующий файл информацию, которая совпала хотя бы с одним из эталонов, а остальную игнорируют…
  • отрицательные фильтры – выбрасывают любую информацию, которая совпала хотя бы с одним из эталонов, и только оставшуюся пропускают в результирующий файл…

Для формирования сводных таблиц средствами макроса придется широко использовать и те, и другие виды фильтров.
Например, в определенной колонке листа указан город расположения аптеки…
Задача может ставиться так:

  • суммирование данных по 3-5 конкретным городам – резонно использовать положительный фильтр;
  • суммирование данных по всем городам, кроме Москвы и Санкт-Петербурга – здесь удобнее отрицательный фильтр;

Функция формирования фильтров для сводной таблицы (по массиву эталонных строковых значений) написана и есть в коде…

Пример создания Сводной таблицы макросом VBA Excel (эксель)

Хочу сразу оговориться, что многие авторитетные сайты, не считают задачу формирования сводной таблицы средствами VBA уместной. По их мнению, прекрасный инструментарий Excel позволяет с наименьшими трудностями обходиться без макросов в этом вопросе… Но, ко мне обращались, представители аналитического сообщества, которым скучно, и неприятно утомительно, из раза в раз устанавливать десятки флажков (checkbox) по нескольким полям большой Базы данных…. Так что все зависит от конкретного случая…. Для кого-то это решение может стать лучшим….

Определение строк сводной таблицы.

На этом этапе важно определить уровни группировки данных (по Вашему желанию или желанию Вашего руководства).

With svT.PivotFields(«Препарат»)
.Orientation = xlRowField
.Position = 1
End With
With svT.PivotFields(«Упаковка»)
.Orientation = xlRowField
.Position = 2
End With

Как видим, здесь в группу «Препарат» попали все виды упаковок данного лекарства.

Определение фильтров сводной таблицы.

На этом этапе определяем фильтры, по которым макрос создаст сводную таблицу, но подкорректировать эти фильтры возможно будет и в ручную… Excel для этого предоставляет удобные возможности.

‘добавляем эталонные строковые значения в массив необходимого размера
ReDim ar(0 To 5)
ar(0) = «Москва»:
ar(1) = «г Москва»:
ar(2) = «Москва г»:
ar(3) = «Москва, ТЦ «»Малая Родина»»»:
ar(4) = «г Владимир»:
ar(5) = «Зеленоград»

А сейчас формируем положительный фильтр по этим нескольким значениям

FilterPlusMinus True, ar, «Город» ‘оставляет только указанные города

Или отрицательный фильтр (результат показан на Рис.4)

FilterPlusMinus False, ar, «Город» ‘оставляет города, за исключением указанных

Конечно, фильтр, допускающий только одно значение выглядит проще…

‘добавление фильтра с одним значением
With ActiveSheet.PivotTables(tNam).PivotFields(«Поставщик»)
.Orientation = xlPageField
.Position = 1
End With
svT.PivotFields(«Поставщик»).ClearAllFilters
svT.PivotFields(«Поставщик»).CurrentPage = «Санофи Россия»

А это фильтр, который по умолчанию фильтром не является, так как пропускает любые значения…, но все же есть смысл его добавить к сводной таблице, чтобы иногда… (в некоторых трудно прогнозируемых случаях), можно было его подстроить вручную…

‘добавление фильтра со всеми значениями (для ручной корректировки в процессе анализа)
With ActiveSheet.PivotTables(tNam).PivotFields(«Плательщик»)
.Orientation = xlPageField
.Position = 1
End With
svT.PivotFields(«Плательщик»).CurrentPage = «(All)»

Определение полей сводной таблицы с Итоговыми данными (здесь суммами значений).

Итоговые данные (не обязательно суммирование) всегда представляют исключительный интерес… Правда?
Таких полей в сводной таблице может быть несколько, но в моем примере на «листе данных» больше нет числовых полей, поэтому и суммирование проводить больше, как по полю «Количество», не уместно…

svT.AddDataField svT.PivotFields(«Количество»), «Сумма по полю Количество», xlSum

И вот, результат.

Безошибочность работы макроса в разы превышает возможности человека…
Про скорость я уж вообще не говорю…, Ни каких сравнений…

Поэтому, изучать язык программирования VBA очень интересно и выгодно.
Долго…? Времени на изучение жалко…?
В принципе… это не обязательно… Как не обязательно знать электронную начинку телевизора, чтобы использовать этот телевизор по назначению…
Если Вы сотрудничаете с программистом, то Вам останется – указать минимум данных и запустить уже готовый макрос… Все.
Пробуйте…

11.8 Работа со сводными таблицами (объект PivotTable)

Объект Excel.PivotTable, программная работа со сводными таблицами и кубами OLAP в Excel средствами VBA, объект PivotCache, создание макета сводной таблицы

В процессе работы большинства предприятий накапливаются так называемые необработанные данные (raw data) о деятельности. Например, для торгового предприятия могут накапливаться данные о продажах товаров — по каждой покупке отдельно, для предприятий сотовой связи — статистика нагрузки на базовые станции и т.п. Очень часто менеджменту предприятия необходима аналитическая информация, которая генерируется на основе необработанной — например, посчитать вклад каждого вида товара в доходы предприятия или качество обслуживания в зоне данной станции. Из необработанной информации такие сведения извлечь очень тяжело: нужно выполнять очень сложные SQL-запросы, которые выполняются долго и часто мешают текущей работе. Поэтому все чаще в настоящее время необработанные данные сводятся вначале в хранилище архивных данных — Data Warehouse, а затем — в кубы OLAP, которые очень удобны для интерактивного анализа. Проще всего представить себе кубы OLAP как многомерные таблицы, в которых вместо стандартных двух измерений (столбцы и строки, как в обычных таблицах), измерений может быть очень много. Обычно для описания измерений в кубе используется термин «в разрезе». Например, отделу маркетинга может быть нужна информация во временном разрезе, в региональном разрезе, в разрезе типов продукта, в разрезе каналов продаж и т.п. При помощи кубов (в отличие от стандартных SQL-запросов) очень просто получать ответы на вопросы типа «сколько товаров такого-то типа было продано в четвертом квартале прошлого года в Северо-Западном регионе через региональных дистрибьюторов.

Конечно же, в обычных базах данных такие кубы не создать. Для работы с кубами OLAP требуются специализированные программные продукты. Вместе с SQL Server поставляется база данных OLAP от Microsoft, которая называется Analysis Services. Есть OLAP-решения от Oracle, IBM, Sybase и т.п.

Для работы с такими кубами в Excel встроен специальный клиент. По-русски он называется Сводная таблица (на графическом экране он доступен через меню Данные -> Сводная таблица), а по-английски — Pivot Table. Соответственно, объект, который представляет этот клиент, называется PivotTable. Необходимо отметить, что он умеет работать не только с кубами OLAP, но и с обычными данными в таблицах Excel или баз данных, но многие возможности при этом теряются.

Читать еще:  Создание файла excel vb net

Сводная таблица и объект PivotTable — это программные продукты фирмы Panorama Software, которые были приобретены Microsoft и интегрированы в Excel. Поэтому работа с объектом PivotTable несколько отличается от работы с другими объектами Excel. Догадаться, что нужно сделать, часто бывает непросто. Поэтому рекомендуется для получения подсказок активно использовать макрорекордер. В то же время при работе со сводными таблицами пользователям часто приходится выполнять одни и те же повторяющиеся операции, поэтому автоматизация во многих ситуациях необходима.

Как выглядит программная работа со сводной таблицей?

Первое, что нам потребуется сделать — создать объект PivotCache, который будет представлять набор записей, полученных с источника OLAP. Очень условно этот объект PivotCache можно сравнить с QueryTable. Для каждого объекта PivotTable можно использовать только один объект PivotCache. Создание объекта PivotCache производится при помощи метода Add() коллекции PivotCaches:

Dim PC1 As PivotCache

Set PC1 = ActiveWorkbook.PivotCaches.Add(xlExternal)

PivotCaches — стандартная коллекция, и из методов, которые заслуживают подробного рассмотрения, в ней можно назвать только метод Add(). Этот метод принимает два параметра:

  • SourceType — обязательный, определяет тип источника данных для сводной таблицы. Можно указать создание PivotTable на основе диапазона в Excel, данных из базы данных, во внешнем источнике данных, другой PivotTable и т.п. На практике обычно OLAP есть смысл использовать только тогда, когда данных много — соответственно нужно специализированное внешнее хранилище (например, Microsoft Analysis Services). В этой ситуации выбирается значение xlExternal.
  • SourceData — обязательный во всех случаях, кроме тех, когда значение первого параметра — xlExternal. Собственно говоря, определяет тот диапазон данных, на основе которого и будет создаваться PivotTable. Обычно принимает объект Range.

Следующая задача — настроить параметры объекта PivotCache. Как уже говорилось, этот объект очень напоминает QueryTable, и набор свойств и методов у него очень похожий. Некоторые наиболее важные свойства и методы:

  • ADOConnection — возможность возвратить объект ADO Connection, который автоматически создается для подключения к внешнему источнику данных. Используется для дополнительной настройки свойств подключения.
  • Connection — работает точно так же, как и одноименное свойство объекта QueryTable. Может принимать строку подключения, готовый объект Recordset, текстовый файл, Web-запрос. файл Microsoft Query. Чаще всего при работе с OLAP прописывается строка подключения напрямую (поскольку получать объект Recordset, например для изменения данных, большого смысла нет — источники данных OLAP практически всегда доступны только на чтение). Например, настройка этого свойства для подключения к базе данных Foodmart (учебная база данных Analysis Services) на сервере LONDON может выглядеть так:

PC1.Connection = «OLEDB;Provider=MSOLAP.2;Data Source=LONDON1;Initial Catalog = FoodMart 2000»

  • свойства CommandType и CommandText точно так же описывают тип команды, которая передается на сервер баз данных, и текст самой команды. Например, чтобы обратиться на куб Sales и получить его целиком в кэш на клиенте, можно использовать код вида
  • свойство LocalConnection позволяет подключиться к локальному кубу (файлу *.cub), созданному средствами Excel. Конечно, такие файлы для работы с «производственными» объемами данных использовать очень не рекомендуется — только для целей создания макетов и т.п.
  • свойство MemoryUsed возвращает количество оперативной памяти, используемой PivotCache. Если PivotTable на основе этого PivotCache еще не создана и не открыта, возвращает 0. Можно использовать для проверок, если ваше приложение будет работать на слабых клиентах.
  • свойство OLAP возвращает True, если PivotCache подключен к серверу OLAP.
  • OptimizeCache — возможность оптимизировать структуру кэша. Изначальная загрузка данных будет производиться дольше, но потом скорость работы может возрасти. Для источников OLE DB не работает.

Остальные свойства объекта PivotCache совпадают с аналогичными свойствами объекта QueryTable, и поэтому здесь рассматриваться не будут.

Главный метод объекта PivotCache — это метод CreatePivotTable(). При помощи этого метода и производится следующий этап — создание сводной таблицы (объекта PivotTable). Этот метод принимает четыре параметра:

  • TableDestination — единственный обязательный параметр. Принимает объект Range, в верхний левый угол которого будет помещена сводная таблица.
  • TableName — имя сводной таблицы. Если не указано, то автоматически сгенерируется имя вида «СводнаяТаблица1».
  • ReadData — если установить в True, то все содержимое куба будет автоматически помещено в кэш. С этим параметром нужно быть очень осторожным, поскольку неправильное его применение может резко увеличить нагрузку на клиента.
  • DefaultVersion — это свойство обычно не указывается. Позволяет определить версию создаваемой сводной таблицы. По умолчанию используется наиболее свежая версия.

Создание сводной таблицы в первой ячейке первого листа книги может выглядеть так:

PC1.CreatePivotTable Range («A1»)

Сводная таблица у нас создана, однако сразу же после создания она пуста. В ней предусмотрено четыре области, в которые можно размещать поля из источника (на графическом экране все это можно настроить либо при помощи окна Список полей сводной таблицы — оно открывается автоматически, либо при помощи кнопки Макет на последнем экране мастера создания сводных таблиц):

  • область столбцов — в нее помещаются те измерения («разрез», в котором будут анализироваться данные), членов которых меньше;
  • область строк — те измерения, членов которых больше;
  • область страницы — те измерения, по которым нужно только проводить фильтрацию (например, показать данные только по такому-то региону или только за такой-то год);
  • область данных — собственно говоря, центральная часть таблицы. Те числовые данные (например, сумма продаж), которые мы и анализируем.

Полагаться на пользователя в том, что он правильно разместит элементы во всех четырех областях, трудно. Кроме того, это может занять определенное время. Поэтому часто требуется расположить данные в сводной таблице программным образом. Эта операция производится при помощи объекта CubeField. Главное свойство этого объекта — Orientation, оно определяет, где будет находиться то или иное поле. Например, помещаем измерение Customers в область столбцов:

PT1.CubeFields («[Customers]»).Orientation = xlColumnField

Затем — измерение Time в область строк:

PT1.CubeFields («[Time]»).Orientation = xlRowField

Затем — измерение Product в область страницы:

Читать еще:  Формула промежуточные итоги в excel

PT1.CubeFields («[Product]»).Orientation = xlPageField

И наконец, показатель (числовые данные для анализа) Unit Sales:

PT1.CubeFields(«[Measures].[Unit Sales]»).Orientation = xlDataField

Теперь сводная таблица создана и с ней вполне можно работать. Однако часто необходимо выполнить еще одну операцию — раскрыть нужный уровень иерархии измерения. Например, если нас интересует поквартальный анализ, то нужно раскрыть уровень Quarter измерения Time (по умолчанию показывается только самый верхний уровень). Конечно, пользователь может сделать это самостоятельно, но не всегда можно рассчитывать, что он догадается, куда щелкнуть мышью. Программным образом раскрыть, например, иерархию измерения Time на уровень кварталов для 1997 года можно при помощи объектов PivotField и PivotItem:

Обновление всех сводных таблиц в моей книге excel с помощью макроса

У меня есть книга с 20 различными сводными таблицами. Есть ли простой способ найти все сводные таблицы и обновить их в VBA?

10 ответов:

или, если ваша версия Excel достаточно старый,

этот код VBA обновит все сводные таблицы / диаграммы в книге.

другой непрограммный вариант:

  • щелкните правой кнопкой мыши на каждой сводной таблице
  • выберите параметры таблицы
  • ТИК ‘открыть’.
  • нажмите на кнопку OK

это будет обновлять сводную таблицу при каждом открытии книги.

ActiveWorkbook.RefreshAll обновляет все, не только сводные таблицы, но и запросы ODBC. У меня есть несколько запросов VBA, которые ссылаются на подключения к данным, и с помощью этой опции происходит сбой, поскольку команда запускает подключения к данным без подробностей, предоставленных из VBA

Я рекомендую этот вариант, если вы хотите обновить только пивоты

в определенных обстоятельствах вы можете различать сводную таблицу и ее PivotCache. Кэш имеет свой собственный метод обновления и свои собственные коллекции. Таким образом, мы могли бы обновить все сводные Кеши вместо сводных таблиц.

разница? Когда вы создаете новую сводную таблицу, вас спрашивают, Хотите ли вы ее использовать на основе предыдущей таблицы. Если вы скажете «нет», эта сводная таблица получит свой собственный кэш и удвоит размер исходных данных. Если вы скажете «Да», вы сохраните свой Книга небольшая, но вы добавляете в коллекцию сводных таблиц, которые совместно используют один кэш. Вся коллекция обновляется при обновлении любой сводной таблицы в этой коллекции. Таким образом, вы можете представить, какая разница может быть между обновлением каждого кэша в книге по сравнению с обновлением каждой сводной таблицы в книге.

в панели инструментов сводной таблицы есть опция обновить все. Этого достаточно. Больше ничего не надо делать.

у вас сводные таблицы коллекция на VB лист «объект». Итак, быстрый цикл, как это будет работать:

Записки из окопов:

  1. не забудьте снять защиту с любых защищенных листов перед обновлением сводной таблицы.
  2. сохранить часто.
  3. Я подумаю о большем и обновлю в свое время. 🙂

код используется в модуле активировать лист, поэтому он отображает мерцание / сбой при активации листа.

даже мы можем обновить конкретное соединение и в свою очередь он обновит все шарниры, связанные с ним.

для этого кода я создал срез из таблицы, присутствующей в Excel:

Я использую команду, указанную ниже, в недавнем прошлом, и она, кажется, работает нормально.

надеюсь, что это поможет.

Если вы используете MS Excel 2003, то перейдите в меню Вид — > панель инструментов — > сводная таблица из этой панели инструментов мы можем сделать обновление, нажав кнопку ! этот символ.

Oracle BI по-русски

5 нояб. 2012 г.

BIP: VBA для создания Сводной таблицы Excel

Всем привет! Сегодня хочу рассказать о том, какие интересные возможности дает нам Excel шаблон для Oracle BI Publisher. А именно – различная пост-обработка отчетов в формате Excel с помощью VBA-кода.
В качестве примера я покажу как можно построить сводную таблицу в Excel-отчете средствами самого Excel. И аналогично – как можно построить диаграмму в Excel-отчете.
1. Создадим новую модель данных – excel_test_dm, которая будет в качестве источника данных использовать файл Sales.xml из набора demo-файлов BIPublisher 11g.


На всякий случай выкладываю этот файл.

Удостоверимся, что созданная модель возвращает требуемые данные.

2. Создадим новый отчет – excel_test_rep – на базе существующей модели данных – excel_test_dm.
Загрузим новый шаблон разметки для отчета.

Сам Excel-файл шаблона разметки доступен здесь.

3. Сохраним отчет и перейдем в режим его просмотра.

4. Вот такая симпатичная сводная таблица отобразится при открытии файла результата отчета.

Также на другом листе будет доступна и сводная диаграмма.

Причем и сводная таблица, и диаграмма созданы с помощью VBA-кода в момент открытия Excel-файла результата отчета.
BIPublisher же лишь заполнил один лист файла – Data. По данным которого были построены остальные листы отчета – Pivot Chart, Pivot Table.


Думаю, идея понятна. С помощью BIPublisher осуществляется выгрузка данных на один из листов (возможно, лист скрытый) результирующего файла.
Создается макрос на открытие книги (Workbook_Open), который и осуществляет вызов различных VBA-процедур по пост-обработке данных. И сам макрос Workbook_Open и весь VBA-код следует располагать в рамках модуля Workbook («ЭтаКнига»)

Ну и наконец, сам код, используемый в данном примере:

Большая часть кода взята с ресурса офигенного гуру VBACraig Hatmaker
За что я ему очень благодарен!

P.S. Если вы будете использовать данный пример как основу для своих отчетов, то вот краткая инструкция по применению:
1) Создайте свой Excel-шаблон разметки.
2) Убедитесь, что он корректно заполняется данными, будучи используемым в BIPublisher отчете.
3) Важно, чтобы ваши «сырые» данные, отображаемые на листе Data (можете назвать этот лист как угодно, можете вообще скрыть его), предварялись заголовочной строкой.
4) Скопируйте VBA-код выше в Workbook-модуль своего Excel-файла шаблона.
5) Внесите изменения в определение констант в самом начале кода:

Самое главное здесь – задать верное название именованного диапазона, который будет содержать ваши «сырые» данные (константа sDataRange).
Типы диаграмм (константа sChartType) можно посмотреть здесь.
6) Внесите изменения в теле функции Do_Pivot()
А именно – поменяйте размерность массивов для различных разделов сводной таблицы, если планируете другое кол-во элементов в них. И задайте значения всем элементам этих массивов.

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×