Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программное изменение диапазона сводной Excel и её обновление / 2 сообщений из 2, страница 1 из 1
26.07.2017, 11:56
    #39495144
jediAlex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное изменение диапазона сводной Excel и её обновление
Здравствуйте. пытаюсь решить следующую задачу: на лист книги Excel выгружаю данные из запроса БД. Структура запроса не меняется, т.е. количество полей в выборке постоянное, но меняется количество строк. Из выгружаемых данных делается сводная таблица в той же книге. Я попытался программно задать диапазон для этой сводной и обновить её. в результате у меня получилось что то непонятное, структура таблицы нарушилась. Делал так( обработчик из формы приложения на MS Access):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Set report = CreateObject("Excel.Application")
Set Wb = report.Workbooks.Open(Me.Path)
Set WS1 = Wb.Sheets("ЧасовФактСотрудниковПоЗадач") ' лист с выгрузкой из БД
Set WSSvodPlan = Wb.Sheets("ДляПланаПоСотрудникам") '  лист со сводной таблицей
LastRow = WS1.usedRange.Row + WS1.usedRange.Rows.Count - 1 'последняя строка листа с выгрузкой из БД
WSSvodPlan.PivotTables("СводнаяТаблица1").ChangePivotCache Wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=WS1.Range("A2:AC" & LastRow), Version:=xlPivotTableVersion15)
WSSvodPlan.PivotTables("СводнаяТаблица1").PivotCache.Refresh


задание диапазона сводной и обновление сводной я делал по примеру макроса, который записал сам excel, когда я сам делал эти манипуляции. Вот код автоматически сформированного макроса:
Код: vbnet
1.
2.
3.
4.
[VB]АctiveSheet.PivotTables("СводнаяТаблица1").ChangePivotCache ActiveWorkbook. _
        PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "C:\Users\ggvozdko\Documents\[Загрузка ПС с 14.07.17 по 20.07.17.xlsx]ЧасовФактСотрудниковПоЗадач!R1C1:R292C29" _
        , Version:=xlPivotTableVersion15)[/VB]

Прилагаю книгу с примером(копировал только значения). Лист "ДляПланаПоСотрудникам" - исходная сводная, сформированная средствами Excel, лист ДляПланаПоСотрудникам на VBA - то что получилось в результате макроса
...
Рейтинг: 0 / 0
26.07.2017, 15:01
    #39495340
iMrTidy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Программное изменение диапазона сводной Excel и её обновление
jediAlex,

Если я правильно Вас понял, то Вам нужно, чтобы сводная таблица динамически определяла диапазон исходных данных. В таком случае, можно поступить так:
1. Добавить Connection вручную или при помощи кода к листу с исходными данными.
2. Использовать Existing Connections на вкладке Data, добавив сводную таблицу, либо сделать это программно.
3. Чтобы сводная таблица обновлялась автоматически при каждом обновлении исходных данных, можно написать код, который будет реагировать на изменения в листе с исходными данными и обновлять сводную таблицу.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программное изменение диапазона сводной Excel и её обновление / 2 сообщений из 2, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]