powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Программное изменение диапазона сводной Excel и её обновление
2 сообщений из 2, страница 1 из 1
Программное изменение диапазона сводной Excel и её обновление
    #39495144
jediAlex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. пытаюсь решить следующую задачу: на лист книги 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
Программное изменение диапазона сводной Excel и её обновление
    #39495340
iMrTidy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jediAlex,

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


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